Duplicity错误:BackendException:SSH连接到SERVER_IP:22失败:未知服务器SERVER_IP

我正在尝试使用Duplicity设置备份系统。 我有一台服务器,我想备份到另一台SFTP服务器。

如果我尝试通过SFTP连接它工作正常:

root@SERVER:~# sftp user@SFTP_IP user@SFTP_IP's password: Connected to SFTP_IP. sftp> 

但是当我尝试使用Duplicity时:

  root@SERVER:~# duplicity /etc sftp://user@SFTP_IP// BackendException: ssh connection to SFTP_IP:22 failed: Unknown server SFTP_IP 

我已经试过以下关于这个问题的唯一指示,我发现在网上: http : //tom.meinlschmidt.org/2014/04/24/duplicity-backendexception-ssh-connection-to-server22-failed-unknown-server /

然而,它没有起作用,因为作者几乎没有提供什么原因的细节,只是这可能是paramiko,我不知道该怎么做。

我的configuration如下:

  root@SERVER:~# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.7 (wheezy) Release: 7 Codename: wheezy root@SERVER:~# ssh -V OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013 root@SERVER:~# duplicity -V duplicity 0.6.18 root@SERVER:~# python -c "import paramiko; print paramiko.__version__" 1.7.7.1 (George) 

编辑1:好吧,问题似乎并不严格来自paramiko自2013年( github链接 )pipe理简单的paramiko sftp演示程序连接就好了。

编辑2:我有一个几乎全新的Wheezy安装服务器上的这个问题,我安装了Ubuntu 14.04(与OpenSSH_6.6.1p1和paramiko 1.10.1)和Duplicity(0.6.23)正常工作。

好的,我已经用python代码多了一些。 @lxio你是对的,这不是真正的Paramiko或Duplicity的bug,但似乎known_hosts系统似乎有点不一致(不清楚),但我终于得到它的工作。

我使用ssh myhost -p 2323来接受签名,但是这个方法似乎没有在known_hosts列表中存储特定的端口值(因此Paramiko拒绝连接,因为它认为指纹是myhost:21 。没有正确的通过bash添encryption钥,但我知道如何通过Paramiko将指纹添加到known_hosts文件,以确保将来连接到正确的主机。

我们要通过Paramiko将关键字添加到known_hosts文件中:

  1. 编辑/usr/share/pyshared/duplicity/backends/sshbackend.py

keyfilename=None之前添加:

 self.client.load_host_keys("/root/.ssh/known_hosts") self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

(/ root /是这里的userdir,这可能对你有所不同)。

  1. 用Duplicity(使用主机的地方)执行同步突击队。 现在Paramiko会将ssh指纹添加到您的known_hosts。

  2. 删除你对sshbackend.py所有编辑并保存文件。

您可以使用cat /root/.ssh/known_hosts进行validation。 你会看到[myhost]:2323 ssh-rsa ....

请记住,这是一个黑客,因为你会接受主机的任何指纹

也许有点晚了,但我自己也遇到了这个问题:这是一个paramiko中的错误,仍然不固定…

你需要手动补丁(文件/usr/share/pyshared/duplicity/backends/sshbackend.py ):

 --- sshbackend.py.orig 2012-04-10 12:32:27.000000000 +1000 +++ sshbackend.py 2012-04-10 12:38:10.000000000 +1000 @@ -127,6 +127,10 @@ if (m!=None): keyfilename=m.group(1) + # workaround for #668239 in paramiko: port!=22 causes key lookup to fail + # but the default policy is to reject unknown keys... + self.client.set_missing_host_key_policy(paramiko.WarningPolicy()) + if parsed_url.port: portnumber=parsed_url.port else: 

资料来源: https : //bugs.debian.org/cgi-bin/bugreport.cgi?bug=668229

如果服务器不在.ssh / known_hosts文件中,可能会发生这种情况。 只需通过sshlogin一次,并同意添加它,错误将会消失。