はじめに

 本来なら作業者毎にアカウントを分ける事が望ましいのですが、WebサーバーへコンテンツをSFTPやSCPでアップしたり、sshで操作するような場合にアカウントが1つしかなく、作業者が複数いるような場合にsshの鍵認証を作業者毎に鍵を設定する事があります。この場合、Linux上はアカウントが1つなので通常は誰がログインしたのか通常の方法だと誰が何時ログインしたか分からないが、調べる方法はあります。

ログの確認

 RedHat系の場合だと、ディフォルトで /va/log/secure ファイルにログが出力されていると思います。

Nov  1 14:04:53 server sshd[24633]: Accepted publickey for account_name from 192.168.1.10 port 58809 ssh2: ED25519 SHA256:meWfJ1sPO3N1halqnCNZHlg6V+NbHiTCauQqBDs1/PM

 重要なのは時間はもちろんですが、アカウント名とssh2: 以下の部分が誰のsshの公開鍵が使われたのか判別する為に必要な部分になります。これはサーバーのアカウント毎に設置しているsshの公開鍵のフィンガープリント、つまり指紋です。

公開鍵の finger print の確認

# ssh-keygen -lf ~/account_name/.ssh/authorized_keys
2048 SHA256:QQaYlpSe6MD0JLR7J0c2uynEwdJQyvE2WZismIJgfwk account_name1 (RSA)
2048 SHA256:jJFhZmTF0AhjwtcGyrJmeRW1YwJBXzRsbUlJok2VfY0 account_name2 (RSA)
256 SHA256:meWfJ1sPO3N1halqnCNZHlg6V+NbHiTCauQqBDs1/PM account_name3 (ED25519)
2048 SHA256:NfogWGsKwDntpOCqnqSUjRz6FA95i7ng6wP+0WvbCIU account_name4 (RSA)
256 SHA256:iQzKS426ZCgLjpNZ2can1GBa2Xso/NJVxg6BWzIE7Hc account_name5 (ED25519)

ログに出力されたフィンガープリントと合致するものを探す。今回の場合は account_name3 の公開鍵が使われたという事が分かる。

最後に

 公開鍵はコメントを入れなくても機能的には問題ありませんが、管理的にも誰のものか分かるように記述しておくことが当たり前ですが非常に重要です