為什麼「ssh user@machine1」不需要密碼,但「ssh root@machine2」需要?

為什麼「ssh user@machine1」不需要密碼,但「ssh root@machine2」需要?

這是我研究的 DigitalOcean 登入問題在 DigitalOcean 官方支援網站上閱讀此問題後。我的首字母被拒絕了:

ssh root@$IP_DO

從上面的鏈接,我首先將範圍縮小到:

ssh -o "IdentitiesOnly yes" -i ~/.ssh/id_rsa root@$IP_DO

當我執行上述操作時,它要求輸入密碼。我打開密碼管理器,當然,我已經在該密鑰上設定了密碼。輸入它,我就進去了。

(如果重要的話,我在設定 Digital Ocean 帳戶時輸入了公鑰,然後選擇它來建立 Droplet)。

稍微ssh-add ~/.ssh/id_rsa輸入一次密碼,現在 DigitalOcean 不再要求我輸入密碼了。

但是,即使在我執行上面的 ssh-add 之前,我始終可以 ssh 進入 LAN 上伺服器上的 Virtualbox 虛擬機,沒有問題。順便說一句,這些是 bitnami 虛擬機器。

在這兩種情況下,DigitalOcean 和 VM 都~/.ssh/authorized_keys顯示相同的內容:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC35MyHYQPWgHgxOffs2oI4jAJCTSldYr1tMb/LMogbTXtQW35mSsWexiwYjPIcdkkOl2Zqrt43696U1oZco90ibkFrbbXrqDGZssbaqfqk7

並看著/etc/ssh/sshd_config

數位海洋:

egrep 'Authentication|PAM|Pass' /etc/ssh/sshd_config | grep -v '^#
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM yes

uname -rv
4.4.0-93-generic #116-Ubuntu SMP Fri Aug 11 21:17:51 UTC 2017

比特奈米虛擬機

egrep 'Authentication|PAM|Pass' /etc/ssh/sshd_config | grep -v '^#'
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes

uname -rv
3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26)

現在,進一步閱讀該線程,它建議運行ssh-add ~/.ssh/id_rsa.這要求輸入密鑰的密碼。

現在,DigitalOcean 和 VM 都可以在沒有密碼的情況下工作,但我很好奇為什麼 VM 從來不需要密碼而 DigitalOcean 需要?

答案1

好的,我已經解決了,我很確定我知道發生了什麼。

SSL 將嘗試儲存在的遠端 public_keys授權密鑰與使用挑戰系統的本機密鑰相比。您並不真正知道或控制它嘗試的順序。

machine1 (VM) root~/.ssh/authorized_keys指向我的一個不受密碼保護的金鑰,例如github。它還有id_rsa,但從來沒有問過,因為它之前就進來過id_rsa, 使用github

machine2(Digitalocean)根目錄~/.ssh/authorized_keys不包含對我的未受保護的引用github身份金鑰,所以它最終得到id_rsa。因為id_rsa的身份尚未載入到 ssh 代理程式中,並且由於它受密碼短語保護,因此要求我提供密碼短語。

請注意,這與我關於授權密鑰相同的說法相矛盾。 id_rsa 的條目在這兩個檔案中,但 Bitnami 虛擬機器上還有其他公鑰。

相關內容