如何查找执行 SSH 的用户名?

如何查找执行 SSH 的用户名?

当某人ssh oracle@hostB在本地主机 A 上执行 SSH 时,他会hostB知道在主机 A 上执行 SSH 的用户吗?有没有办法找出执行 SSH 的用户名?

答案1

使用 时ssh,您将以远程计算机所知道的用户之一的身份登录到远程计算机hostname。因此,以用户身份登录的任何人oracle都将被视为远程计算机上的单个用户。

如果您想区分远程计算机上的登录者,请为每个用户提供自己的帐户。管理系统,即设置 umask、所有权和权限或使用 ACL 扩展权限,以确保任何用户都可以执行该用户应执行的操作。

答案2

如果有帮助的话:

如果您设置服务器以便人们使用公钥和私钥登录(并拒绝密码),则用于登录服务器的密钥将由 ssh 守护程序记录在系统日志文件中。

您可以通过在所有公钥上运行以下命令来找出匹配的密钥,直到找到匹配的密钥

ssh-keygen -lf ~/.ssh/xxxx.pub

其中 xxx 是公钥的名称,当输出与日志文件条目匹配时,您就拥有了连接到服务器的用户的身份。

答案3

你说的“主持人 A”,是指主持人在该命令ssh oracle@hostname执行了,还是远程主机hostname

在第一种情况下,执行命令的本地用户的名称显然是本地主机已知的。它存储在例如环境变量LOGNAME或中USERNAME,或者可以使用命令获取id -un

例如,如果您想要记录该名称,您可以ssh用包装脚本替换二进制文件,该脚本使用上述任何一种方法获取本地用户名,将其与时间戳一起写入某个日志文件,然后使用ssh提供给脚本的原始参数调用“真实”二进制文件。

相关内容