如何通过密钥对实现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
如果上述命令执行失败,也可以分两步操作:
- 先把公钥传到
user1@ip1:scp ~/.ssh/id_rsa_user2.pub user1@ip1:~/ - 登录
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
相关产品推荐
相关产品推荐

