如何在远程计算机上列出SSH连接顺序?

时间:2014-09-22 23:20:31

标签: bash ssh tunnel ssh-tunnel tunneling

假设我正在处理LocalA(用户名userA)。我使用ssh隧道到RemoteB(用户名userB),然后到RemoteC(用户名userC),最后到RemoteDestinationD(用户名) userD)。

它看起来像下面这样:

userA@LocalA$ ssh userB@RemoteB
userB@RemoteB$ ssh userC@RemoteC
userC@RemoteC$ ssh userD@RemoteDestinationD
userD@RemoteDestinationD$ 

假设我忘记了我用来连接LocalARemoteDestinationD的哪一系列连接。它可能是一次跳跃(例如userA@LocalA$ ssh userD@RemoteDestinationD)或三次跳跃(如上例所示)。我怎么能以编程方式确定我的跳跃系列是什么? (“滚动你的历史,虚拟!”不算......)

我想要一个输出如下内容的BASH脚本:

userA@LocalA$ --> userB@RemoteB
userB@RemoteB$ --> userC@RemoteC
userC@RemoteC$ --> userD@RemoteDestinationD

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我怀疑,没有好办法做到这一点。如果你愿意,你可以做很多真正的黑客攻击,例如打开X11端口转发和使用不同的端口进行计数。

或者,更令人讨厌的是:

sshcount=0
ssh userA@RemoteA "echo sshcount=$(($sshcount+1)) > .bashrc; bash"

从那里做类似的事情到达B,所以sshcount不断增加。

显然,这应该通过覆盖.sshcountrc文件或其他内容来完成,并从.bashrc中获取。然后,如果您想支持执行此类的并行版本,则可能需要使文件名依赖于$SSH_TTY的某些变换。

整个事情真的是一个黑客,所以也许你不应该这样,你应该以另一种方式解决问题。或者首先不需要计数。