如何列出远程计算机上的 SSH 连接序列?
Posted
技术标签:
【中文标题】如何列出远程计算机上的 SSH 连接序列?【英文标题】:How can I list the SSH connection sequence on a remote computer? 【发布时间】:2014-11-17 00:51:51 【问题描述】:假设我正在处理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$
假设我忘记了从LocalA
连接到RemoteDestinationD
的连接系列。它可能是一跳(例如userA@LocalA$ ssh userD@RemoteDestinationD
)或三跳(如我上面的示例)。我如何以编程方式确定我的一系列跳跃是什么? (“滚动浏览你的历史记录,笨蛋!”不算数......)
我想要一个输出如下内容的 BASH 脚本:
userA@LocalA$ --> userB@RemoteB
userB@RemoteB$ --> userC@RemoteC
userC@RemoteC$ --> userD@RemoteDestinationD
有什么想法吗?
提前致谢!
【问题讨论】:
【参考方案1】:我怀疑没有好的方法可以做到这一点。如果您愿意,您可以做很多真正的小技巧,例如打开 X11 端口转发和使用不同的端口进行计数。
或者,更令人讨厌的是:
sshcount=0
ssh userA@RemoteA "echo sshcount=$(($sshcount+1)) > .bashrc; bash"
然后从那里做一些类似的事情来到达 B,所以 sshcount 不断增加。
显然这应该通过覆盖.sshcountrc
文件或其他东西来完成,并从.bashrc
获取。然后,如果您想支持执行此操作的并行版本,您可能需要使文件名依赖于 $SSH_TTY
的某些修改。
整个事情真的是一个黑客,所以也许你不应该无论如何,你应该以另一种方式解决问题。或者一开始就不需要计数。
【讨论】:
以上是关于如何列出远程计算机上的 SSH 连接序列?的主要内容,如果未能解决你的问题,请参考以下文章