如何自動將伺服器新增至known_hosts? (並且不使用 md5 指紋,因為我的意思是安全方式,請不要發送“自動是/接受”解決方案。我想將所需的憑證從伺服器帶到機器)
我想自動更新我的 sshknown_hosts
檔案以接受新伺服器。
我假設,我需要添加伺服器的公鑰(id_rsa.pub
透過安全通道取得),但我看到的是格式不同(我嘗試像這樣添加awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts
但驗證失敗。請注意,我不想使用 md5由於md5 的缺陷而導致指紋) 。如果有其他id_rsa.pub
有用的東西,我可以在伺服器上運行命令並透過可信任通道取得結果。 (請注意,它不是網路通道(想想物理上將隨身碟從一個地方帶到另一個地方),所以並ssh-keyscan
不能解決問題,更重要的是id_rsa.pub 是未在伺服器上運行的dropbear 伺服器的密鑰,因此只有帶有密鑰的檔案可用,但不是伺服器)
答案1
該名稱id_rsa.pub
看起來像是用戶的公鑰。這known_hosts
與known_hosts
儲存主機密鑰無關。顧名思義,主機金鑰對主機(即電腦)進行身份驗證,而使用者金鑰則對使用者進行身份驗證。 OpenSSH 的主機公鑰通常位於/etc
或中,/etc/ssh
並稱為ssh_host_rsa_key.pub
.
Dropbear 有一個包含私鑰的檔案。若要提取公鑰(採用 Dropbear 和 OpenSSH 相容的格式),請執行
dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub
我不認為 OpenSSH 附帶更新known_hosts
檔案的命令。手動完成很容易:
echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts
如果您想要對主機名稱進行雜湊處理(以便讀取您known_hosts
檔案的人無法知道這些伺服器的名稱 - 這是一個非常小的隱私增益),請ssh-keygen -H
稍後運行。