我想找出哪个 SSH 用户通过 SSH 在服务器上启动了我的脚本,即该用户使用了哪个公钥登录。
SSH_CONNECTION
环境变量给了我客户端的 IP 地址。
我还想知道authorized_keys
使用了哪个公钥及其注释(通常是电子邮件)。
我正在寻找一种无需摆弄sshd
其日志的解决方案,这样我就不需要设置目标服务器。唯一可以确定的是该脚本在 Ubuntu 服务器上运行。而且我的用户没有sudo
权限。
答案1
默认情况下,您无法获取此信息。但可以通过几种不同的方式获取。
作为非特权用户
您可以使用该authorized_keys
文件格式中的一些功能。我认为对您最有用的功能是environment
。
在每一行的开头、authorized_keys
在键本身的前面放置一个如下字符串:
environment="SSH_KEY=name"
在每一行中,您都可以用不同的值替换name
。这将设置一个环境变量,SSH_KEY
当该特定行authorized_keys
用于身份验证时,该变量将被调用。您可以使用 找到完整的功能集man sshd
。
作为系统管理员
启用ExposeAuthInfo
设置sshd_config
并重新加载守护进程。然后sshd
将您正在寻找的信息写入临时文件。该文件的路径可以在SSH_USER_AUTH
环境变量中找到。
可以使用 找到有关此类设置的更多信息man sshd_config
。
答案2
/var/log/auth.log 将包含如下条目:
Accepted publickey for <userid> from <IP address> port 57762 ssh2: RSA SHA256: <43 random characters>
“随机字符”是所用公钥的指纹。您可以使用以下方法在本地 authorized_keys 文件中找出密钥的指纹:
ssh-keygen -lf /home/user/.ssh/authorized_keys
其中列出了每个密钥的指纹以及密钥的注释(通常是一封电子邮件..)