多位开发人员在testing服务器上使用共享帐户,使用公钥authentication。 有什么办法找出哪个密钥用于身份validation(例如密钥注释)?
你想在已经发生的事情(法医学)之后find这个东西,或者你想做出这样的事情,以便logging谁做了什么?
对于取证:在我的Fedora系统上, /var/log/secure包含每个公钥authentication和用户名的logging,但没有说明使用了哪个键。 你可能在这里运气不好
为了将来的可审计性:您可以使用authorized_keys文件来设置每个login被限制的命令,然后运行一个logging身份validation的程序(以及可能的后续命令,使用类似于sudoscript的东西):
如果行开头的选项短语包含关键字command =“string”,则使用该特定键进行身份validation的任何ssh连接都将只运行指定的命令,即使给出的命令行指定了另一个命令。
必须说的是,build立多个帐户,然后build立一个共享访问区域可能更有意义。
…使用共享帐户…
感谢给我们一个完美的例子,当解释为什么这是一个坏主意时。 😉
认真,虽然,希望你想不能做afaik。 如果通过“键注释”你是指在键后的id_rsa文件中的注释,这是一个不行。 这是一个评论,它不被发送到另一边的服务器。
真。 设置多个帐户。
如果您设置sshd以足够详细的级别login,则会打印用于login的密钥的指纹。 尽pipe填写你的日志非常快。
为了审计,如果你的人正在使用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