Linux
將已知密鑰/指紋添加到 known_hosts 的良好做法是什麼
與此類似的問題有很多答案,但我似乎找不到一個有明確答案的問題。他們要麼至少獲取一次公鑰,要麼完全忽略密鑰,要麼直接寫入 known_hosts 文件(意味著沒有雜湊)
我有伺服器的指紋和/或公鑰。我想要一個 shell 命令將它添加到客戶端的
known_hosts
文件中。這必須使用任何配置(散列/無散列)此外,該腳本將從該伺服器執行 git pull,因此我不知道此時提供埠資訊是否相關。請告訴我是不是。
謝謝。如果這已經得到回答並且我以某種方式錯過了它,請隨時為我指出正確的方向。
PS - 額外資訊:我詢問埠的原因之一是因為我已經完成了以下操作但沒有成功(我知道這是從主機獲取密鑰,我不想這樣做):
ssh-keygen -R my.awesome.host # hostname ssh-keygen -R 1.2.3.4 # IP ssh-keygen -R my.awesome.host,1.2.3.4 ssh-keyscan -H my.awesome.host,1.2.3.4 >> ~/.ssh/known_hosts ssh-keyscan -H 1.2.3.4 >> ~/.ssh/known_hosts ssh-keyscan -H my.awesome.host >> ~/.ssh/known_hosts
但是當我 git clone (通過 ssh)時,我遇到了一個響亮的:
The authenticity of host '[my.awesome.host]:7999 ([1.2.3.4]:7999)' can't be established. RSA key fingerprint is fi:ger:pr:in:ti:nf:or:ma:ti:on Are you sure you want to continue connecting (yes/no)?
然而
ssh user@my.awesome.host
並沒有提示我指紋。
擁有公鑰,您可以簡單地將密鑰寫入
known_hosts
文件並可能重新散列,如果您需要:HOSTNAME=my.awesome.host PORT=7999 PUBKEY="ssh-rsa AAAAB3NzaC1yc2EAAAAD...E" KNOWN_HOSTS="~/.ssh/known_hosts" echo "[$HOSTNAME]:$PORT $PUBKEY" >> $KNOWN_HOSTS # re-hash, if needed: ssh -G -p $PORT $HOSTNAME | grep "hashknownhosts yes" && \ ssh-keygen -H -f $KNOWN_HOSTS
-G
開關ssh
是相當新的。如果它不起作用,您將必須確定是否以不同的方式對已知主機進行散列(或不考慮條件進行)。具有已散列主機的散列文件不會觸及這些行。
我沒有嘗試上面的腳本,但你應該能夠從中得到要點(如果有錯別字,請修復錯別字)。