我有一个生产系统,允许几个不同的人login到一个帐户 – 该帐户是为应用程序,而不是为个人,因为我们没有生产服务器上的个人帐户。
为了审计的目的,我希望能够告诉谁在什么时间login,而且我们使用SSH密钥login似乎是合乎逻辑的跟踪(因为没有其他标识符要跟踪)。
当SSH对用户进行身份validation时,它会将用户名logging到系统的安全日志中,但是它不会logging在login时使用哪个授权的公钥。是否有可能让OpenSSH也报告使用哪个公用密钥,或者只是与该键相关的评论?
正在使用的操作系统是CentOS 5.6,但我也想听听其他操作系统是否可以使用。
如果在/ etc / sshd / sshd_config中将LogLevel提升为VERBOSE,则会logging用于validation用户的公钥的指纹。
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
获取特定公钥的指纹。
如果你的人正在使用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
尝试在sshd_config
使用LogLevel
参数。 有关详细信息,请参阅man sshd_config
一个很好的博客文章回答你的问题: http : //www.screenage.de/blog/2012/02/10/how-to-log-history-and-logins-from-multiple-ssh-keys-under-one-用户帐户与-木偶/