이중성 오류: BackendException: SERVER_IP에 대한 SSH 연결:22 실패: 알 수 없는 서버 SERVER_IP

이중성 오류: BackendException: SERVER_IP에 대한 SSH 연결:22 실패: 알 수 없는 서버 SERVER_IP

Duplicity를 사용하여 백업 시스템을 설정하려고 합니다. 다른 SFTP 서버에 백업하고 싶은 서버가 있습니다.

SFTP를 통해 연결하려고 하면 정상적으로 작동합니다.

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

하지만 이중성을 사용하려고 하면 다음과 같습니다.

    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)

편집1:좋아, 문제는 2013년의 간단한 paramiko sftp 데모 프로그램 이후로 paramiko에서 엄격히 발생한 것 같지 않습니다(github-링크) 잘 연결되었습니다.

편집2:Wheezy를 거의 새로 설치한 서버에서 이 문제가 발생했습니다. 여기에 Ubuntu 14.04(OpenSSH_6.6.1p1 및 paramiko 1.10.1 포함)를 설치했는데 Duplicity(0.6.23)가 제대로 작동합니다.

답변1

좋아, 나는 파이썬 코드로 좀 더 장난을 쳤습니다. @lxio 맞습니다. 이것은 실제로 Paramiko나 Duplicity의 버그는 아니지만 Known_hosts 시스템이 약간 일관성이 없고 불분명한 것 같지만 마침내 작동하게 되었습니다.

ssh myhost -p 2323서명을 수락했지만 이 방법은 목록에 특정 포트 값을 저장하지 않는 것 같습니다 ( known_hosts따라서 Paramiko는 지문이 이라고 생각하기 때문에 연결을 거부합니다 myhost:21. 아직 bash를 통해 키를 추가할 올바른 방법이 없습니다. 하지만 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/는 여기서 사용자 디렉토리이며 사용자마다 다를 수 있습니다.)

  1. Duplicity(호스트를 사용하는 경우)를 사용하여 동기화 특공대를 실행합니다. 이제 Paramiko는 당신의 Known_hosts에 SSH 지문을 추가할 것입니다.

  2. 모든 편집 내용을 제거 sshbackend.py하고 파일을 저장합니다.

를 이용하여 확인할 수 있습니다 cat /root/.ssh/known_hosts. 당신은 볼 것이다[myhost]:2323 ssh-rsa ....

답변2

서버가 .ssh/known_hosts 파일에 없으면 이런 일이 발생할 수 있습니다. SSH를 통해 한 번만 로그인하고 추가하는 데 동의하면 오류가 사라집니다.

답변3

호스트의 모든 지문을 허용하므로 이것이 해킹이라는 점을 기억하십시오.

조금 늦었을 수도 있지만 제가 직접 문제에 직면했을 때 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

관련 정보