# SSH免密登录

# ssh原理

https://www.jianshu.com/p/33461b619d53 (opens new window)

# 环境介绍

  • 操作系统 CentOS 7
  • clientOS: 192.168.0.1
  • serverOS: 192.168.0.2

# ssh环境检查

## 查看ssh安装包
yum list installed | grep ssh
## 查看ssh服务运行状态
ps -ef | grep ssh
1
2
3
4

# 操作步骤

# 1. 客户端生成公钥和私钥

  • ssh-keygen -t rsa 回车输入保存路径名称,例如:~/.ssh/id_rsa_kitty,回车
  • 输入私钥密码,例如:kitty,回车。
  • 确认私钥密码,如:kitty,回车。
  • 操作完成后会在~/.ssh/目录下生成2个文件。公钥id_rsa_kitty和私钥id_rsa_kitty.pub

# 2. 修改客户端配置

  • 把私钥加入/etc/ssh/ssh_config配置里面,防止每次登录都需要指定私钥路径。
IdentityFile ~/.ssh/id_rsa_kitty		#如果有其他的私钥,还要再加入其他私钥的路径
1

# 3. 上传公钥到服务端

  • 使用ftp客户端将id_rsa_kitty.pub上传至服务端的~/.ssh/目录。

# 4. 修改服务端配置

  • 修改/etc/ssh/sshd_config文件,vim /etc/ssh/sshd_config
Port 2202				#将默认的22端口修改为2202端口
PermitRootLogin no		#禁用root账户登录,非必要,但为了安全性,要配置
StrictModes no			#是否让 sshd 去检查用户家目录或相关档案的权限数据,这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys
PasswordAuthentication no	#有了证书登录,可以禁用密码登录
1
2
3
4
5
6
7
  • 修改了sshd_config文件,需要重启sshd服务
/usr/sbin/sshd restart
1
  • 将公钥写入服务端配置文件
cat  id_rsa_kitty.pub >> ~/.ssh/authorized_keys
1

# 5. 客户端连接服务端

ssh -p 2202 root@192.168.0.2
1
更新时间: 2021-05-05 20:24:13