我正在使用一个设置,我需要从客户端ssh到服务器,其中ssh到服务器仅限于特定的堡垒主机。我在堡垒主机和服务器之间建立了一个现有的ssh隧道(使用autossh),我希望能够在我的python库中使用它。我尝试使用ProxyCommand来做这件事,但我无法理解如何做到这一点。这就是我试过的:
cmd="/usr/bin/ssh -o 'ProxyCommand=/usr/bin/nc -x <bastion-host>:<ssh-tunnel-port> %h %p' -i <identity-file> <user>@<target-host>"
sock=paramiko.ProxyCommand(cmd)
t=paramiko.Transport(sock)
t.connect()`
当我运行它时,上面的ssh调用有效 - 我能够ssh到目标主机,但是当用作ProxyCommand时,connect()
调用只是挂起。
问题:
我在做什么错误的代理命令?我需要在ssh命令中更改某些内容,还是以不同方式使用ProxyCommand对象?
还有其他方法可以使用paramiko实现我需要的东西(不使用ProxyCommand本身)吗?