Ssh

要知道主機的 SSH 連接仍然需要授權

  • February 27, 2021

我正在嘗試使用duply安全連接設置備份伺服器。

我創建了~/.ssh/config包含以下內容的文件:

Host backup
 IdentityFile ~/.ssh/id_ed25519_backup
 Hostname <server_ip>
 Port 22
 User <user_on_host>

此外,我還定義了known_hosts文件,通過在其中複製粘貼伺服器公鑰(在 中找到/etc/ssh/ssh_host_ed25519_key.pub

ssh -v backup使用命令時一切似乎都正常工作:

Authenticated to <server_ip> ([<server_ip>]:22)

但是,在啟動duply備份常式時,我看到伺服器無法辨識:

The authenticity of host '[<server_ip>]:22' can't be established.
SSH-ED25519 key fingerprint is c3:06:95:f8:5f:d3:76:7f:c6:9d:19:ef:e5:23:9a:14.
Are you sure you want to continue connecting (yes/no)? 

為什麼會這樣?


更新

似乎duply是計算公鑰的 MD5 散列,而sshSHA256 的散列:事實上,正如這裡提到的,ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub返回與上述相同的十六進制。既然它們是同一個密鑰的兩個不同的雜湊,為什麼仍然要求連接確認?是否可以強制 SSH 只使用一個雜湊算法?

進一步更新:

ssh -o FingerprintHash=md5 -v backup不需要確認,所以我認為問題僅限於duply. 也許,它不是指使用者known_hosts文件嗎?

duply基於 Paramiko python 模組建構並更深入地檢查其實現,似乎 Paramiko 無法管理散列已知主機。然後我/etc/ssh/ssh_config通過設置修改了SSH配置文件,並通過插入明確的目標IP和/或域HashKnownHosts no重寫了內容。~/.ssh/known_hosts

引用自:https://unix.stackexchange.com/questions/635587