重複性錯誤:BackendException:與 SERVER_IP:22 的 ssh 連接失敗:未知伺服器 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,我不知道該怎麼做。
我的配置如下:
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 文件中:
- 編輯
/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/ 是這裡的使用者目錄,這對你來說可能不同)。
- 使用 Duplicity(使用主機的地方)執行同步突擊隊。現在 Paramiko 會將 ssh 指紋添加到您的 known_hosts。
- 刪除您對文件所做的所有編輯
sshbackend.py
並保存文件。您可以使用
cat /root/.ssh/known_hosts
. 你會看見[myhost]:2323 ssh-rsa ....