Ssh

重複性錯誤:BackendException:與 SERVER_IP:22 的 ssh 連接失敗:未知伺服器 SERVER_IP

  • June 10, 2015

我正在嘗試使用 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,我不知道該怎麼做。

我的配置如下:

   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)

**EDIT1:**好的,問題似乎並不完全來自 paramiko,因為 2013 年的一個簡單的 paramiko sftp 展示程序(github-link)可以很好地連接。

**EDIT2:**我在幾乎全新安裝 Wheezy 的伺服器上遇到了這個問題,我在其上安裝了 Ubuntu 14.04(帶有 OpenSSH_6.6.1p1 和 paramiko 1.10.1)並且 Duplicity(0.6.23)工作正常。

好的,我已經用 python 程式碼愚弄了一些。@lxio 你是對的,這並不是 Paramiko 或 Duplicity 的錯誤,但 known_hosts 系統似乎有點不一致(並且不清楚),但我終於讓它工作了。

我曾經ssh myhost -p 2323接受簽名,但是這種方法似乎沒有將特定的埠值儲存在known_hosts列表中(因此Paramiko拒絕連接,因為它認為指紋是myhost:21..我仍然沒有正確通過bash添加密鑰,但我知道如何known_hosts通過 Paramiko 將指紋添加到文件中,以確保它將來連接到正確的主機。

我們將通過 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/ 是這裡的使用者目錄,這對你來說可能不同)。

  1. 使用 Duplicity(使用主機的地方)執行同步突擊隊。現在 Paramiko 會將 ssh 指紋添加到您的 known_hosts。
  2. 刪除您對文件所做的所有編輯 sshbackend.py並保存文件。

您可以使用cat /root/.ssh/known_hosts. 你會看見[myhost]:2323 ssh-rsa ....

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