如何将本地私钥传递到中转跳板机的SSH命令中?
解决中转服务器下SSH密钥认证连接目标服务器的问题
方法1:使用SSH代理转发(推荐)
这是最安全的方案,无需将私钥传输到中转服务器,而是通过本地SSH代理完成目标服务器的认证。
- 确保本地SSH允许代理转发(默认通常开启),可在
~/.ssh/config中添加或确认配置:
Host intermediate-server ForwardAgent yes
- 先连接中转服务器,此时本地代理会被转发至中转服务器:
ssh me@intermediate-server - 在中转服务器内直接连接目标服务器,代理会自动调用本地私钥完成认证:
ssh me@target-server - 也可通过单条命令直接完成:
ssh -A me@intermediate-server ssh me@target-server-A参数等同于配置中的ForwardAgent yes,用于开启代理转发。
方法2:通过标准输入传递私钥
若不想使用代理转发,可将本地私钥通过标准输入传递给中转服务器上的SSH命令,私钥仅在内存中临时使用,不会写入中转服务器磁盘:
cat /path/to/my-local-prv-key | ssh me@intermediate-server "ssh -i /dev/stdin me@target-server"
方法3:配置SSH Config文件简化连接
在本地~/.ssh/config中添加以下配置,之后只需一条命令即可直接连接目标服务器:
Host target-server ProxyJump me@intermediate-server IdentityFile /path/to/my-local-prv-key
配置完成后,直接执行ssh target-server,系统会自动通过中转服务器完成连接,全程无需手动处理中转步骤,私钥始终保留在本地。
注意事项
- 使用代理转发时,务必确保中转服务器为可信节点,避免代理被滥用。
- 绝对不要将私钥复制到中转服务器磁盘,这会大幅降低密钥安全性。
内容的提问来源于stack exchange,提问作者beatrice
相关产品推荐
相关产品推荐

