Sshd
使用密鑰為 ssh 記錄錯誤的密碼
我已經將登錄配置為使用密鑰進行 ssh 並且工作正常。問題是,當我使用密鑰和包含的密碼連接到伺服器時,當我輸入錯誤的密碼時,我沒有看到任何失敗的登錄嘗試。使用以下命令沒有失敗的登錄嘗試:
/var/log/audit/audit.log
或者
/var/log/secure
換句話說,我可以在沒有任何操作的情況下輸入密碼來進行密鑰直到我死去。您有什麼想法如何使用帶密碼的密鑰登錄到文件失敗的登錄嘗試 ssh 嗎?
作業系統為:Red Hat Enterprise Linux Server release 7.3 (Maipo)
先感謝您。
當我多次輸入錯誤密碼時,這是來自伺服器的日誌:
Connection from my_ip port 51115 on server_ip port 22 sshd[3639]: Found matching RSA key: 00:12:23 ... sshd[3639]: Postponed publickey for some_user from ip_address port 51115 ssh2 [preauth]
聽起來您已將客戶端密鑰配置為需要密碼才能在連接到伺服器之前打開密鑰。您的伺服器不會記錄它,因為這發生在客戶端電腦上。
基本上,保護 SSH 密鑰的密碼完全是客戶端的事情。考慮一下,它甚至
ssh-keygen
允許您在不連接任何伺服器的情況下更改密碼 (ssh-keygen -p -f id_rsa
)。當然,這需要知道舊密碼,但您可以(嘗試)猜測它而不提示您正在執行此操作的伺服器。也就是說,當連接到伺服器時,SSH 客戶端會向伺服器提供它擁有的任何密鑰,然後再要求輸入密碼來解密密鑰。您會注意到,如果您連接到不接受您的密鑰的主機,則永遠不會詢問密碼。
$ ssh -v -v somehost ... debug1: Offering RSA public key: /... debug2: we sent a publickey packet, wait for reply debug1: Server accepts key: pkalg ssh-rsa blen 407 debug2: input_userauth_pk_ok: fp blah debug1: key_load_private_type: incorrect passphrase supplied to decrypt private key Enter passphrase for key '/...':
從技術上講,您可以修改伺服器以檢測提供密鑰但不進行身份驗證的客戶端。但這無濟於事,因為任何攻擊者都可以在嘗試驗證之前先嘗試解密密鑰。同樣,即使使用通常的實用程序也可以做到這一點:這是您在執行
ssh-agent
.如果密鑰對您來說不夠用,目前版本的 OpenSSH 允許伺服器同時要求密鑰和密碼。文件以此為例,首先需要一個密鑰,然後是一個密碼(使用“密碼”或“鍵盤互動”身份驗證):
AuthenticationMethods publickey,password publickey,keyboard-interactive