是否可以让OpenSSH记录身份验证中使用的公钥?


27

我有一个生产系统,允许几个不同的人登录到一个帐户-该帐户用于应用程序而不是该人,因为我们在生产服务器上没有个人帐户。

出于审计目的,我希望能够告诉谁在什么时间登录,并且当我们使用SSH密钥登录时,跟踪该地址似乎是合乎逻辑的(因为没有其他标识符可跟踪)。

SSH对用户进行身份验证时,它会将用户名记录到系统的安全日志中,但不会记录登录中使用了哪个授权的公钥。是否有可能使OpenSSH也报告使用了哪个公钥,还是仅仅是与该键相关的注释?

所使用的操作系统是CentOS 5.6,但我也想听听它是否可以在其他操作系统上使用。

Answers:


33

如果在/ etc / sshd / sshd_config中将LogLevel提升为VERBOSE,它将记录用于认证用户的公共密钥的指纹。

LogLevel VERBOSE

然后你会收到这样的消息

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

您可以使用

 ssh-keygen -lf /path/to/public_key_file

获取特定公共密钥的指纹。


2
谢谢!我需要确认authorized_keys文件的密钥指纹,因此我制作了这个(p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
小脚本来

我注意到SSH现在每次登录都要记录两次密钥-知道为什么和/或如何使它一次登录吗?
摊铺

为什么,这是我不熟悉的细节。您可以停止它吗,也许不能不翻阅源代码。
user9517支持GoFundMonica

2
该线程看起来很相关。它两次找到匹配的密钥:一次确定密钥是否可接受,然后第二次检查客户端提供的签名。
mpontillo 2014年

3

如果您的人员正在使用ssh-agent,则可以将其放在.bashrc中:

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log

不幸的是,这是一个好主意,我想要登录的原因之一是我对要登录的用户使用了authorized_keys命令,而他们通常没有获得bash shell。
2013年

0

尝试使用中的LogLevel参数sshd_config。有关详细信息,请参阅 man sshd_config


0

3
欢迎来到服务器故障!通常,我们希望网站上的答案能够独立存在-链接很棒,但是,如果该链接中断,则答案应该具有足够的信息,仍然对您有所帮助。请考虑编辑您的答案以包括更多详细信息。有关更多信息,请参见FAQ
slm 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.