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 哈希值,而ssh
SHA256 则在计算:事实上,正如前面提到的这里,ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
返回与上述相同的十六进制。既然它们是同一密钥的两个不同哈希,为什么仍然询问连接确认?是否可以强制 SSH 仅使用单一哈希算法?
进一步更新:
ssh -o FingerprintHash=md5 -v backup
不需要确认,所以我认为问题仅限于duply
.也许,它不是指用户known_hosts
文件?
答案1
duply
建立在 Paramiko python 模块之上,并更深入地检查其实现,看来 Paramiko 无法管理散列的已知主机。然后,我/etc/ssh/ssh_config
通过设置修改了 SSH 配置文件,并通过插入明确的目标 IP 和/或域来HashKnownHosts no
重写 的内容。~/.ssh/known_hosts