【工具】Linux如何实现一台服务器ssh免密登录另外一台服务器
在 Linux 系统中,可以通过配置 SSH 免密登录来实现直接登录远程服务器而无需输入密码。以下是具体步骤:
1. 生成 SSH 密钥对
如果你还没有 SSH 密钥对,需要先生成一个。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa
:指定密钥类型为 RSA。-b 4096
:指定密钥长度为 4096 位(更安全)。-C "your_email@example.com"
:添加注释,通常可以写你的邮箱。
执行后会提示你保存密钥的路径,默认是 ~/.ssh/id_rsa
,直接按回车即可。
接着会提示你设置密钥的密码(passphrase),如果希望完全免密登录,直接按回车跳过。
2. 将公钥复制到远程服务器
使用 ssh-copy-id
命令将本地生成的公钥复制到远程服务器。
ssh-copy-id app@10.12.11.1
- 这个命令会将本地的公钥(默认是
~/.ssh/id_rsa.pub
)追加到远程服务器用户app
的~/.ssh/authorized_keys
文件中。 - 如果是第一次连接远程服务器,可能会提示你确认主机的指纹信息,输入
yes
继续。
注意:如果 ssh-copy-id
命令不可用,可以手动完成以下操作:
-
查看本地公钥内容:
cat ~/.ssh/id_rsa.pub
-
登录到远程服务器:
ssh app@10.12.11.1
-
在远程服务器上创建
.ssh
目录(如果不存在)并设置权限:mkdir -p ~/.ssh chmod 700 ~/.ssh
-
将本地公钥内容追加到
~/.ssh/authorized_keys
文件中:echo "你的公钥内容" >> ~/.ssh/authorized_keys
-
设置
authorized_keys
文件的权限:chmod 600 ~/.ssh/authorized_keys
3. 测试免密登录
完成上述步骤后,尝试重新连接远程服务器:
ssh app@10.12.11.1
如果配置正确,应该可以直接登录,无需输入密码。
4. 检查和排查问题
如果仍然需要输入密码,可能是以下原因导致的:
-
权限问题:
- 确保远程服务器上的
.ssh
目录和authorized_keys
文件权限正确:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
- 确保远程服务器上的
-
SSH 配置文件:
- 检查远程服务器的
/etc/ssh/sshd_config
文件,确保以下配置项已启用:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no
- 修改后需要重启 SSH 服务:
sudo systemctl restart sshd
- 检查远程服务器的
-
日志排查:
- 查看远程服务器的 SSH 日志以获取更多信息:
sudo tail -f /var/log/auth.log
- 查看远程服务器的 SSH 日志以获取更多信息:
通过以上步骤,你应该能够成功实现 SSH 免密登录。如果有其他问题,请随时l联系博主。