在远程 shell 中,如何找出我从哪台计算机登录到远程机器?

hal*_*leo 7 ssh remote hostname

在远程 shell 中,如何找到我登录到远程机器的计算机的域名?

示例:我的本地机器是mi.pona.com. 在这台机器上我运行

ssh toki@sina.pona.com
Run Code Online (Sandbox Code Playgroud)

登录到远程机器sina.pona.com。在打开(在远程机器上运行)的 shell 中,我想知道我是从哪台计算机登录的,所以我想得到结果“ mi.pona.com ”。有这个命令吗?

pin*_*ime 18

ssh 总是将SSH_CONNECTION远程 shell 中的环境变量设置为包含客户端和服务器的主机和端口的值。

这也适用于非交互式 shell 和没有 utmp/systemd/whatever 的机器(例如在您的路由器或相机上)。

ssh root@unq 'echo $SSH_CONNECTION'
192.168.38.152 35466 192.168.38.1 22
Run Code Online (Sandbox Code Playgroud)

然后您可以对该地址进行反向主机查找:

ssh root@unq.und 'nslookup "${SSH_CONNECTION%% *}"'
...
Name:      192.168.38.152
Address 1: 192.168.38.152 bursku.und
Run Code Online (Sandbox Code Playgroud)


Art*_*nov 5

您可以使用w,who甚至last.

你也可以检查sshd日志,journalctl -u sshd -n 100


Sco*_*e H 5

在我的 Red Hat 7 机器上,我运行who am iorwho am Iwho -m.
最后一列将显示我从哪里登录的机器名称(在括号中)。如果我在我的本地机器上,最后一列将显示我的控制台/显示 ID。在我的机器上是 (:0)。

警告 这仅适用于交互式 shell。
ssh ScottieH@RemoteServer who -m会产生意想不到的结果。
在我的 Red Hat 7 机器上,它出现错误。
青年会

  • `我是谁`不起作用。“我是谁”不起作用。`who -m` 返回与 `who` 相同。为什么不直接使用`w`? (2认同)