Bash 如何列出远程计算机上的SSH连接序列?
假设我正在处理Bash 如何列出远程计算机上的SSH连接序列?,bash,ssh,tunnel,ssh-tunnel,tunneling,Bash,Ssh,Tunnel,Ssh Tunnel,Tunneling,假设我正在处理LocalA(usernameuserA)。我使用ssh隧道到RemoteB(用户名userB),然后到RemoteC(用户名userC),最后到RemoteDestinationD(用户名userD) 它看起来类似于以下内容: userA@LocalA$ ssh userB@RemoteB userB@RemoteB$ ssh userC@RemoteC userC@RemoteC$ ssh userD@RemoteDestinationD userD@RemoteDestina
LocalA
(usernameuserA
)。我使用ssh
隧道到RemoteB
(用户名userB
),然后到RemoteC
(用户名userC
),最后到RemoteDestinationD
(用户名userD
)
它看起来类似于以下内容:
userA@LocalA$ ssh userB@RemoteB
userB@RemoteB$ ssh userC@RemoteC
userC@RemoteC$ ssh userD@RemoteDestinationD
userD@RemoteDestinationD$
userA@LocalA$ --> userB@RemoteB
userB@RemoteB$ --> userC@RemoteC
userC@RemoteC$ --> userD@RemoteDestinationD
假设我忘记了从LocalA
连接到RemoteDestinationD
的连接序列。可能是一次跳转(例如userA@LocalA$sshuserD@RemoteDestinationD
)或三次跳跃(如上面的示例所示)。我如何通过编程确定我的一系列跳转是什么?(“滚动浏览您的历史记录,笨蛋!”不算数……)
我想要一个BASH脚本,它将输出如下内容:
userA@LocalA$ ssh userB@RemoteB
userB@RemoteB$ ssh userC@RemoteC
userC@RemoteC$ ssh userD@RemoteDestinationD
userD@RemoteDestinationD$
userA@LocalA$ --> userB@RemoteB
userB@RemoteB$ --> userC@RemoteC
userC@RemoteC$ --> userD@RemoteDestinationD
有什么想法吗
提前谢谢 我想没有什么好办法可以做到这一点。如果愿意的话,您可以进行一些真正的黑客操作,例如打开X11端口转发和使用不同的端口进行计数 或者,更令人讨厌的是:
sshcount=0
ssh userA@RemoteA "echo sshcount=$(($sshcount+1)) > .bashrc; bash"
从那里做一些类似于到达B的事情,所以sshcount不断增加
显然,这应该通过覆盖.sshcountrc
文件或其他内容来完成,并从.bashrc
中获取。然后,如果您想支持并行版本,可能需要使文件名依赖于$SSH\u TTY
整个事情其实是一个黑客行为,所以也许你无论如何都不应该这样做,你应该用另一种方式解决这个问题。或者从一开始就不需要计数