我试图DestinationHost
通过HopHost
隧道
ssh -o ProxyCommand='ssh HopHostUser@HopHost nc -w 10 %h %p' DestinationHost
首先,我以 HopHostUser 身份向 HopHost 进行身份验证
HopHostUser@HopHost password:
在我向 HopHost 进行身份验证后,我得到
Permission denied (publickey).
HopHostUser
的连接使用DestinationHost
密钥进行身份验证,该密钥已配置为HopHostUser
onHopHost
如果我要通过 HopHost 一步一步连接到 DestinationHost(不是隧道/代理),我所要做的就是:
me@localhost >> ssh HopHostUser@HopHost
HopHostUser@HopHost password:
HopHostUser@HopHost >> ssh DestinationHost
HopHostUser@DestionationHost >>
如果我使用-v
原始 ssh 命令,我可以看到本地主机上的密钥,而不是 HopHost 上的密钥
我可以告诉 SSH 使用外部密钥,而不是查看我的本地主机吗?
答案1
你不能使用代理/隧道,因为 ssh 密钥存储在跃点服务器上并且无法在本地访问。理想情况下,您生成一个新密钥并将其添加到~/.ssh/authorized_keys
on DestinationHost
,但这可能是不可能的。
设置此功能的最简单方法是使用远程命令和两个本地端口转发。
打开终端目的地主机:
ssh -t HopHostUser@HopHost "ssh DestinationHost"
打开终端+端口转发目的地主机到本地主机:
ssh -t -L8081:localhost:9999 HopHostUser@HopHost "ssh -L9999:localhost:80 DestinationHost"
为此,您最好使用 ssh 配置。说起来很长。
答案2
你有没有尝试过 ?
ssh HopHostUser@HopHost ssh DestinationHost
几年前我曾经这样做过,也许 ssh 现在可以防止这种情况发生。我无法访问多个主机,因此无法测试此命令。