我了解如何將我的公用 ssh 金鑰放入另一台電腦的授權金鑰中,ssh-copy-id
前提是我有遠端電腦的使用者名稱/密碼。
反過來怎麼可能呢?取得一些遠端電腦的公鑰(不需要密碼,因為它是公共的)並將其放入我自己的授權金鑰中(同樣,不需要密碼,因為它是我的)。
答案1
ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys
答案2
您在那裡混淆了兩種不同類型的 SSH 金鑰。儘管它們的結構相似,但它們的用途卻截然不同。
您的公鑰可以稱為使用者金鑰: 雖然是這樣民眾,即沒有必要保密,不是發表透過任何方式自動進行。如果您想將其放在網頁上,當然可以這樣做。但你必須自己做。
另一方面,每台機器的密鑰稱為主機金鑰。這些會在登入時自動交換,因此可以考慮發表。但主機密鑰不會進入authorized_keys
檔案:而是進入檔案known_hosts
。僅擁有某台電腦的主機金鑰不會向任何人提供任何類型的存取權限:它只是讓您的 SSH 用戶端在您連接到該電腦時確認該電腦與先前相同。
如果系統管理員選擇啟用HostbasedAuthentication
,/etc/ssh/sshd_config
且遠端主機的主機金鑰位於系統範圍的/etc/ssh/ssh_known_hosts
檔案中,則可以將遠端主機的名稱新增至/etc/hosts.equiv
或/etc/ssh/shosts.equiv
允許每個人在該遠端主機上登入本機上的對應帳戶,而無需輸入密碼。如果系統管理員也設定IgnoreRhosts
為no
,那麼您作為普通使用者可以類似地允許特定遠端主機上的特定使用者在沒有密碼的情況下存取您在本機主機上的帳戶,只需將遠端主機的主機金鑰放入您~/.ssh/known_hosts
和username@hostname 到您的~/.rhosts
或~/.shosts
.但預設此身份驗證方法是禁用的。
~/.shosts
(您認為為什麼像和一樣的兩個文件~/.rhosts
?嗯,這是因為該.rhosts
文件被舊的非加密rsh
// rlogin
/工具使用,而 SSH 最初被設計為它的直接替代品。您可以使用或,如果您希望允許透過和工具進行訪問,或者如果您只想允許 SSH 訪問。rexec
rcp
.rhosts
hosts.equiv
rsh
ssh
.shosts
shosts.equiv
答案3
透過使用 ssh-keyscan 或在連接到未知主機時自動將金鑰新增至known_hosts 中。如果您想手動執行此操作,可以使用以下命令:
ssh-keyscan hostname >> ~/.ssh/known_hosts