這是我研究的 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 虛擬機器上還有其他公鑰。