# 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
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
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