SSH 用户公钥信息

SSH 用户公钥信息

我想找出哪个 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

其中列出了每个密钥的指纹以及密钥的注释(通常是一封电子邮件..)

相关内容