You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已配置密钥认证,如何实现服务器间SSH免密钥短语登录?

服务器间SSH免密钥短语登录解决方案

问题原因

本地机器通过ssh-agent缓存了解锁后的密钥,因此能免短语连接各服务器;但登录到server1后,server1既未关联本地的ssh-agent,也未自行启动并加载密钥,所以ssh到server2时需要重新输入密钥短语。

方案1:SSH Agent转发(推荐,更安全)

这种方式无需在服务器上存储密钥,而是将本地的ssh-agent连接转发到server1,让server1借助本地agent完成密钥解锁:

  1. 本地配置永久转发:编辑本地/root/.ssh/config文件,添加以下内容:
    Host server1 server2 server3
      ForwardAgent yes
    
    保存后,后续执行ssh root@server1连接时会自动开启agent转发。
  2. 临时转发(单次生效):若不想修改配置,每次连接server1时添加-A参数:
    ssh -A root@server1
    
    登录server1后,再执行ssh root@server2就无需输入密钥短语了。

方案2:服务器本地启动ssh-agent

如果无法使用agent转发,可在server1上启动ssh-agent并加载密钥:

  1. 登录server1后,启动ssh-agent:
    eval $(ssh-agent)
    
  2. 加载本地密钥(假设密钥文件为/root/.ssh/id_rsa):
    ssh-add /root/.ssh/id_rsa
    
    输入一次密钥短语后,后续在server1上ssh到其他服务器就无需重复输入。
  3. 自动启动配置:若想每次登录server1都自动完成上述操作,可将命令添加到~/.bashrc或~/.profile文件末尾:
    if [ -z "$SSH_AUTH_SOCK" ]; then
      eval $(ssh-agent)
      ssh-add /root/.ssh/id_rsa
    fi
    
    注意:此方式会在服务器上存储密钥文件,安全性低于agent转发,需确保服务器环境安全。

关键权限检查

确保服务器上的SSH相关文件权限正确,否则会导致密钥无法正常使用:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/id_rsa
chmod 600 /root/.ssh/authorized_keys

内容的提问来源于stack exchange,提问作者Marcel Kraan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:52:35