当某人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
提供给脚本的原始参数调用“真实”二进制文件。