Linux 温习(三): 远程连接(SSH)

简介: OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH 协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如 telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh 都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

简介

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH 协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如 telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh 都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

服务端使用

安装 SSH 服务

yum install openssh-server


启动 SSH 服务

systemctl start(或restart) sshd


设置开机运行 SSH

systemctl enable sshd


服务端 config 文件的常用配置参数

SSH 服务端的配置: /etc/ssh/sshd_config

服务端 config 参数 作用
Port sshd 服务端口号(默认是22)
PermitRootLogin 是否允许以root用户身份登录(默认是可以)
PasswordAuthentication 是否允许密码验证登录(默认是可以)
PubkeyAuthentication 是否允许公钥验证登录(默认是可以)
PermitEmptyPasswords 是否允许空密码登录(不安全。默认不可以)

客户端使用

安装

  • Windows 客户端:安装 Putty、XShell 或 SecureCRT
  • Linux 客户端: yum install openssh-clients
  • macOS 客户端︰默认已经安装了 SSH 客户端

通过 config 配置 SHH

  • config 是英语 configuration 的缩写,表示“配置”
  • config 文件可以配置 SSH,方便批量管理多个 SSH 连接

客户全局 config 文件

SSH 客户端的配置: /etc/ssh/ssh_config

局部 config 文件

  • 局部的客户端config文件在用户家目录的.ssh隐藏目录中
  • ~/.ssh/config
  • 此文件一般默认是没有创建的,可以手动创建
  • 创建完 ~/.ssh/config 文件之后
  • 一般会把 ~/.ssh/config 的权限修改为 600
  • chmod 600 ~.ssh/config

客户端 config 文件的配置例子

Host hostname
    HostName 172.20.10.2
    Port 22
    User root


配置总计

SSH 的 config 文件可以帮助我们配置 SSH,config 文件分为全局的 config 文件和局部的 config 文件

全局的 config 文件会对所有用户生效,请谨慎修改。

SSH 免密码登入

验证方法

1. 基于口令

用账户和密码来验证登录

2. 基于密钥的验证

  • 客户机生成密钥对(公钥和私钥),把公钥上传到服务器
  • 并与服务器的公钥进行比较
  • 这种验证登录的方法更加安全,也被称为“公钥验证登录”

公钥验证登录

第 1 步∶在客户机中生成密钥对(公钥和私钥)

  • ssh-keygen (默认使用 RSA 非对称加密算法)
  • 以上命令等价于 ssh-keygen -t rsa
  • ~/.ssh/ 目录下,会新生成两个文件
  • id_rsa.pub :公钥
  • id _rsa:私钥

第 2 步∶把客户机的公钥传送到服务器

  • ssh-copy-id root@172.20.10.2 等价于 ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.20.10.2
  • ssh-copy-id 把客户机的公钥追加到服务器的一个文件
  • authorized_keys
  • ~/.ssh/authorized_keys

设置 SSH 免密码后仍想使用密码登录

ssh -o PreferredAuthentications=password -oPubkeyAuthentication=no user@host


总结

  • 公钥需要传输并储存到远程机器上
  • 私钥则存在我们自己的电脑里
  • 之后,SSH 连接就不需要输入密码了
目录
相关文章
|
2月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
|
3月前
|
网络协议 关系型数据库 Linux
Linux系统中如何开启和配置OpenGauss数据库的远程连接
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性.
|
4月前
|
Linux 网络安全
Linux命令(124)之ssh
Linux命令(124)之ssh
33 2
|
2月前
|
安全 Shell Linux
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
【Shell 命令集合 文件管理】Linux ssh 远程主机之间复制文件 scp 命令使用教程
40 0
|
22天前
|
Linux 网络安全
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
27 1
|
12天前
|
网络协议 安全 Linux
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
|
2月前
|
网络协议 安全 Linux
Linux SSH与DNS:从连接问题诊断到专业解决方案
Linux SSH与DNS:从连接问题诊断到专业解决方案
105 1
|
2月前
|
网络协议 Ubuntu Linux
「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接
「远程开发」VSCode使用SSH远程linux服务器 - 公网远程连接
140 0
|
2月前
|
安全 Linux Shell
|
3月前
|
安全 网络协议 Linux