如何列出远程计算机上的 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 连接序列?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中通过 SSH 隧道运行远程命令

CUDA - 在远程计算机上运行 NVVP,在没有启用 CUDA 的设备的本地计算机上显示结果

如何在新计算机上安装 SSH 密钥? [关闭]

如何在 PyCharm 中进行远程开发?

不使用密码的SSH连接

如何在Windows系统上利用Telnet协议连接Linux服务器