2017-03-18 75 views
1

有什麼辦法可以使用.ssh/authorized_keys來獲得相應的登錄用戶的電子郵件,當linux系統通過id_rsa.pub連接時?監控ssh連接並從authorized_keys獲取登錄用戶信息

我嘗試使用/var/log/auth.log中的內容,但找不到記錄和.ssh/authorized_keys之間的直接關係。

在此先感謝。

+0

測試這是題外話。 Stackoverflow用於編程問題。嘗試superuser.com –

回答

1

ssh公鑰的最後一列是just a comment field,它不存在於用於登錄的私鑰中,也不存在於認證嘗試期間發送給服務器的公鑰中。

服務器授權密鑰中的註釋可能與客戶端公鑰中的註釋完全不同。

你可以在authorized_keys和日誌中的鍵之間的連接,但你需要將按鍵轉換成指紋首先使用

ssh-keygen -lf ~/.ssh/authorized_keys 
2

可能是有人需要它。 Next命令打印有關用於當前會話的ssh密鑰的信息。密鑰取自~/.ssh/authorized_keys的標準註釋塊。

例如,[email protected]會被打印,看起來這樣的關鍵:cyb5OrLRv0VR6gZev8...KdECf7Q== [email protected]

命令:

export CURRENT_SSH_USER=$(grep $(grep $(grep '@'$(who -m | awk '{print $2}') <(ps -ef) | head -1 | awk '{print $3}')']: Accepted publickey for' /var/log/auth.log | head -1 | awk '{print $16}') <(cat ~/.ssh/authorized_keys | xargs -n1 -I% bash -c 'ssh-keygen -l -f /dev/stdin <<<"%"') | tail -1 | awk '{print $3}') 

上面的命令執行下列步驟操作:

  1. who -m只有主機名和用戶關聯w ith stdin。
  2. 以僞終端從機爲例,來自prev的當前用戶的pts/2。命令。
  3. 在進程列表ps -ef中搜索pts/2並提取其pid。
  4. 尋找pid,例如21996 in /var/log/auth.log in this like this: Jul 22 01:50:39 whatever-i-12345 sshd[21996]: Accepted publickey for ubuntu from 10.10.10.10 port 40411 ssh2: RSA SHA256:V4DD10NklAAAAAHNgxaurm1qaq/TOTejNjXMQABABAB。確保啓用了正確的日誌記錄。

  5. 一旦找到指紋SHA256:V4DD10NklAAAAAHNgxaurm1qaq/TOTejNjXMQABABAB,它會將它與來自/.ssh/authorized_keys的行匹配,從註釋塊中檢索有關名稱的信息。

注:

僅在Ubuntu 16.04.2 LTS(GNU/Linux的4.4.0-62-x86_64的仿製)

相關問題