Ssh

為什麼我可以在沒有密鑰或密碼的情況下 ssh 登錄?我該如何阻止這個?

  • August 10, 2017

我剛剛發現只要向 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。正在使用重複的密鑰


在此客戶端上發生以下情況:

  1. 警告顯示指定的密鑰文件不可訪問
  2. 客戶端嘗試尋找任何合適的密鑰

如此處所示:

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)
  1. 然後它會嘗試id_rsa密鑰。如此處所示debug1: Trying private key: /c/Users/G/.ssh/id_rsa
  2. 伺服器看到此密鑰有效並允許繼續登錄debug1: Authentication succeeded (publickey).

引用自:https://serverfault.com/questions/867805