Ssh
為什麼我可以在沒有密鑰或密碼的情況下 ssh 登錄?我該如何阻止這個?
我剛剛發現只要向 ssh 客戶端提供失去的文件,我就可以登錄到我的伺服器!
我可以檢查什麼來找出原因以及我可以改變什麼來阻止這種情況發生?
使用失去的文件登錄
$ ssh -i ~/.ssh/x user@server.com Warning: Identity file /c/Users/G/.ssh/x not accessible: No such file or directory. Last login: Wed Aug 9 20:20:49 2017 from 192.168.15.250 user@server:~$
使用無效證書登錄失敗
$ ssh -i ~/.ssh/invalid.pem user@server Permission denied (publickey).
成功登錄
$ ssh -i ~/.ssh/valid.pem user@server Last login: Wed Aug 9 20:21:07 2017 from 192.168.15.250 user@server:~$
這些是我的 /etc/ssh/sshd_config 中唯一未註釋的行
Host * SendEnv LANG LC_* HashKnownHosts yes GSSAPIAuthentication yes GSSAPIDelegateCredentials no
回答“我可以檢查什麼以找出原因”
ssh -vv
. -vv 參數提供詳細的調試,顯示在本地客戶端上按輸入鍵和在遠端伺服器上看到提示之間發生的情況回答“為什麼我可以在沒有密鑰或密碼的情況下進行 ssh 登錄?”
那不是正在發生的事情。在這種特定情況下,文件
valid.pem
中複製了相應的密鑰id_rsa
。正在使用重複的密鑰在此客戶端上發生以下情況:
- 警告顯示指定的密鑰文件不可訪問
- 客戶端嘗試尋找任何合適的密鑰
如此處所示:
debug2: key: /c/Users/G/.ssh/id_rsa (0x0) debug2: key: /c/Users/G/.ssh/id_dsa (0x0) debug2: key: /c/Users/G/.ssh/id_ecdsa (0x0) debug2: key: /c/Users/G/.ssh/id_ed25519 (0x0)
- 然後它會嘗試
id_rsa
密鑰。如此處所示debug1: Trying private key: /c/Users/G/.ssh/id_rsa
- 伺服器看到此密鑰有效並允許繼續登錄
debug1: Authentication succeeded (publickey).