
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 파일에 키를 추가하겠습니다.
- 편집하다
/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는 당신의 Known_hosts에 SSH 지문을 추가할 것입니다.
모든 편집 내용을 제거
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