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

如何通过密钥对实现SSH代理跳转的全程免密登录?

实现SSH代理跳转全程免密登录(me -> user1@ip1 -> user2@ip2)

步骤1:生成第二跳的密钥对

在本地机器生成用于user2@ip2的无密码密钥对:

ssh-keygen -t rsa -f ~/.ssh/id_rsa_user2

执行时遇到密码输入提示,直接按回车跳过,生成无密码的密钥文件。

步骤2:将公钥上传至user2@ip2的授权列表

直接通过第一跳代理完成公钥上传,执行以下命令:

ssh -i ~/.ssh/id_rsa_user1 -J user1@ip1 user2@ip2 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa_user2.pub

如果上述命令执行失败,也可以分两步操作:

  1. 先把公钥传到user1@ip1:
    scp ~/.ssh/id_rsa_user2.pub user1@ip1:~/
    
  2. 登录user1@ip1,再将公钥传到user2@ip2:
    ssh -i ~/.ssh/id_rsa_user1 user1@ip1
    ssh user2@ip2 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" < ~/id_rsa_user2.pub
    rm ~/id_rsa_user2.pub  # 清理临时文件
    

步骤3:修复目标主机的权限(关键)

SSH对密钥文件权限要求严格,登录user2@ip2执行以下命令确保权限合规:

chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

步骤4:配置本地SSH简化登录(可选)

编辑本地~/.ssh/config文件,添加以下配置:

Host jump-host
    HostName ip1
    User user1
    IdentityFile ~/.ssh/id_rsa_user1

Host target-host
    HostName ip2
    User user2
    IdentityFile ~/.ssh/id_rsa_user2
    ProxyJump jump-host

保存后,直接执行ssh target-host即可完成全程免密跳转。

内容的提问来源于stack exchange,提问作者Pa Dalton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:18:19