有没有一种简单的方法可以判断我是否通过 SSH 进入某个地方而无需输入“exit”?
比如,如果我当前坐在计算机 A 旁,然后通过 SSH 连接到计算机 B,再从 B 连接到计算机 C,有没有办法可以让我无需关闭会话并使用“主机名”就能发现我所在的位置?
(据推测,如果我只是在本地主机,这个解决方案也会清楚地表明我没有在任何地方使用 SSH,但如果我在其他地方使用 SSH,然后从那里使用 SSH 返回到我的本地机器,我就能分辨出来。)
答案1
查看 $SSH_CONNECTION。它会告诉您当前连接的 IP 和端口。至少,OpenSSH 是这种情况。其他服务器可能有所不同。
答案2
如果你知道你被 ssh 了,但不知道从哪里,请尝试
w
在命令行上。输出包含可能有用的 FROM 字段。
答案3
尝试设置提示符以包含主机名;否则我喜欢screen
在每次登录时使用包含主机名的状态行(有点复杂设置,并且它会在带有状态行的屏幕内使用状态行进行递归)。您应该能够echo $HOSTNAME
或只需执行hostname
。
答案4
在您的场景中,如果可能的话,直接从 A 连接到 C。这将避免双重加密。并且可能会增加延迟。
同时修改shell变量PS1为每个帐户反映主机名(如果尚未这样做)。此技巧在您使用 chroot 时也会有所帮助。