Linux

將已知密鑰/指紋添加到 known_hosts 的良好做法是什麼

  • August 19, 2016

與此類似的問題有很多答案,但我似乎找不到一個有明確答案的問題。他們要麼至少獲取一次公鑰,要麼完全忽略密鑰,要麼直接寫入 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是相當新的。如果它不起作用,您將必須確定是否以不同的方式對已知主機進行散列(或不考慮條件進行)。

具有已散列主機的散列文件不會觸及這些行。

我沒有嘗試上面的腳本,但你應該能夠從中得到要點(如果有錯別字,請修復錯別字)。

引用自:https://serverfault.com/questions/797772