ssh互信免密登录设置

背景

在实际工作中,我们经常需要在多台服务器之间进行文件传输或执行命令。为了方便快捷,我们可以设置 ssh 互信免密登录,避免每次登录都需要输入密码。

原理

ssh 互信免密登录的原理是利用 ssh 协议的公钥认证机制。在客户端生成密钥对后,将公钥复制到服务器的 authorized_keys 文件中,即可实现免密登录。

客户端配置

1
2
3
4
# 生成密钥对
ssh-keygen -t rsa
# 将公钥复制到服务器
ssh-copy-id root@ip地址

服务端配置

1
2
3
4
5
6
7
8
9
10
11
12
# 确保服务端目录权限正确
chmod 0755 ~ # 或 chmod g-w ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# 编辑sshd_config文件
vim /etc/ssh/sshd_config
# 找到以下配置项,取消注释并修改为如下值
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 保存并退出
# 重启sshd服务
sudo service sshd restart

连接测试

1
2
3
4
5
6
7
# 从客户端连接服务器
ssh root@ip地址
# 测试成功后,即可免密登录

# 如果有问题,可以加上-vvv参数,查看详细日志
/usr/sbin/sshd -d -p 2222
ssh -vvv root@ip地址 -p 2222

总结

通过以上配置,即可实现 ssh 互信免密登录。在实际工作中,我们可以将此方法应用到多台服务器之间,方便快捷地进行文件传输和命令执行。