在執行 ssh 的 bash 腳本內,僅為某些已知的 RSA 金鑰自動新增主機

在執行 ssh 的 bash 腳本內,僅為某些已知的 RSA 金鑰自動新增主機

我有一個 Chron 作業運行一個 bash 腳本,然後透過 SSH 連接到我的伺服器。但是我的伺服器的IP位址會不時變更(我的bash腳本有一種尋找新IP位址的方法)。但問題是,我的 bash 腳本收到“無法確定主機的真實性...”警告。我不想使用StrictHostKeyChecking=no因為中間人攻擊。然而:

如果RSA金鑰與例如相同RSA金鑰已經在known_host文件中,或者RSA金鑰我已經保存在其他MyServersPublicKey文件中,然後我假設它是我的伺服器並且它只是有一個新的IP。

警告本身顯示指紋RSA金鑰來自“未知”主機,而不是RSA金鑰本身。我想我可以節省RSA金鑰 指紋我的主機,然後讓我的 bash 腳本使用指紋從警告中並將其與已儲存的進行比較指紋。但我想知道是否有人知道更簡單的方法。

我是否必須為此編寫自己的 bash 腳本,或者有什麼可用的嗎?

答案1

如註釋中所述,建立憑證(簽署的主機金鑰)將幫助您解決此問題(請參閱手冊頁ssh-keygen,描述此程序的「憑證」一章)。基本上,您將在伺服器上建立 CA,簽署主機金鑰並將 CA 公鑰儲存在您的電腦中,known_hosts例如:

@cert-authority * ssh-rsa AAAAB5W...

另一種可能性是編寫一些 bash 腳本,它將在主機金鑰前面添加您的 IP known_hosts(如果您沒有對該檔案進行雜湊處理)。類似的東西應該​​有效:

sed -i -e "s/your_host/new_ip,your_host/" ~/.ssh/known_hosts

相關內容