Назад | Перейти на главную страницу

duplicity scp (ssh) работает с IP-адресом, а НЕ с доменом?

Я хотел бы использовать дублирование для создания зашифрованной удаленной резервной копии. SSH-ключи на месте и работают:

sudo -u ssh-user -p 41111 domain.myfritz.net

открывает терминал на удаленном хосте. Вход без пароля, так как я создал эти логины для подключения через скрипты.

Также:

sudo -u ssh-user duplicity -v 5 --encrypt-key=*keyid* /path/to/local scp://123.456.789.012:41111//path/to/backup

работает как шарм! Но:

sudo -u ssh-user duplicity -v 5 --encrypt-key=*keyid* /path/to/local scp://domain.myfritz.net:41111//path/to/backup

терпит неудачу. Кстати, я, конечно, также использовал ssh-user@domain.myfritz.net и ssh-user@123.456.789.012, всегда в сочетании с sudo -u, без разницы.

С -v 5 это отображается (ничего подобного при использовании команды с IP!):

Using temporary directory /tmp/duplicity-H9igFH-tempdir
Backend error detail: Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1553, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1547, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1382, in main
    action = commandline.ProcessCommandLine(sys.argv[1:])
  File "/usr/lib/python2.7/dist-packages/duplicity/commandline.py", line 1126, in ProcessCommandLine
    backup, local_pathname = set_backend(args[0], args[1])
  File "/usr/lib/python2.7/dist-packages/duplicity/commandline.py", line 1015, in set_backend
    globals.backend = backend.get_backend(bend)
  File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 223, in get_backend
    obj = get_backend_object(url_string)
  File "/usr/lib/python2.7/dist-packages/duplicity/backend.py", line 209, in get_backend_object
    return factory(pu)
  File "/usr/lib/python2.7/dist-packages/duplicity/backends/ssh_paramiko_backend.py", line 235, in __init__
    self.config['port'], e))
BackendException: ssh connection to ssh-user@domain.myfritz.net:41111 failed: [Errno 13] Permission denied

Я попытался понять (!) И использовать: --scp-command ssh; pexpect + scp; изменил мой ssh_config, чтобы он принимал все ключи хоста; --ssh-option "-op 41111" и еще, чтобы избежать проблемы с портом и paramiko, поскольку это кажется проблемой. Но это не помогло ... myfritz.net - это служба DDNS от производителя моего маршрутизатора (Fritz! Box), которая работает очень хорошо - без проблем вводит логины и ssh-логин с моего локального компьютера. Пинг домена и IP возвращаются практически одновременно. Может кто-нибудь попытаться помочь? Я мог бы, конечно, написать сценарий, который пингует удаленный сервер и использует этот IP-адрес, но это кажется странным.

локально: OpenSSH_7.4p1 Debian-10 + deb9u6, OpenSSL 1.0.2r 26 февраля 2019 г. дублирование 0.7.11

удаленный (domain.myfritz.net): OpenSSH_7.4p1 Raspbian-10 + deb9u5, OpenSSL 1.0.2q 20 ноября 2018 г.

Спасибо за прочтение!

ИЗМЕНИТЬ, чтобы ответить BarsMonster:

Спасибо за Ваш ответ! Хотя пинг возвращает правильный IP-адрес, я вручную добавил IP-адрес в / etc / hosts (test.test.de теперь связан с правильным IP). Теперь ssh-соединение успешно, но возникает новая проблема:

ssh: Connected (version 2.0, client OpenSSH_7.4p1)
ssh: Authentication (publickey) successful!
Main action: inc
================================================================================
duplicity 0.7.11 (December 31, 2016)
Args: /usr/bin/duplicity -v 5 --encrypt-key=REDACTED /REDACTED scp://ssh-user@test.test.de:41111/REDACTED    Linux odroidhc2 4.14.94-odroidxu4 #14 SMP PREEMPT Fri Feb 8 11:14:13 CET 2019 armv7l
/usr/bin/python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516]
================================================================================
Using temporary directory /tmp/duplicity-L7N_bX-tempdir
Temp has 1046974464 available, backup will use approx 272629760.
Synchronizing remote metadata to local cache...
PASSPHRASE variable not set, asking user.
GnuPG passphrase for decryption:

появляется запрос GnuPG для расшифровки, я ввожу кодовую фразу. И GPG выдает ошибку:

GPG error detail: Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1553, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1547, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1398, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1419, in do_backup
    sync_archive(decrypt)
  File "/usr/bin/duplicity", line 1206, in sync_archive
    copy_to_local(fn)
  File "/usr/bin/duplicity", line 1151, in copy_to_local
    gpg.GzipWriteFile(src_iter, tdp.name, size=sys.maxsize)
  File "/usr/lib/python2.7/dist-packages/duplicity/gpg.py", line 421, in GzipWriteFile
    new_block = block_iter.next()
  File "/usr/bin/duplicity", line 1131, in next
    self.fileobj.close()
  File "/usr/lib/python2.7/dist-packages/duplicity/dup_temp.py", line 226, in close
    assert not self.fileobj.close()
  File "/usr/lib/python2.7/dist-packages/duplicity/gpg.py", line 279, in close
    self.gpg_failed()
  File "/usr/lib/python2.7/dist-packages/duplicity/gpg.py", line 246, in gpg_failed
    raise GPGError(msg)
GPGError: GPG Failed, see log below:
===== Begin GnuPG log =====
gpg: encrypted with 3072-bit RSA key, ID REDACTED, created 2019-03-16
"My Name <name@gmail.com>"
gpg: decryption failed: No secret key
===== End GnuPG log =====

когда я подключаюсь через IP (scp: //123.456.789.012 // ...) он работает. Отсутствие запроса на парольную фразу и gpg / duplicity правильно «понимают» ситуацию. Увидеть ниже:

ssh: Connected (version 2.0, client OpenSSH_7.4p1)
ssh: Authentication (publickey) successful!
Main action: inc
================================================================================
duplicity 0.7.11 (December 31, 2016)
Args: /usr/bin/duplicity -v 5 --encrypt-key=REDACTED /REDACTED scp://ssh-user@123.456.789.012:41111/REDACTED
Linux odroidhc2 4.14.94-odroidxu4 #14 SMP PREEMPT Fri Feb 8 11:14:13 CET 2019 armv7l
/usr/bin/python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516]
================================================================================
Using temporary directory /tmp/duplicity-rmi2v3-tempdir
Temp has 1046974464 available, backup will use approx 272629760.
Local and Remote metadata are synchronized, no sync needed.
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED    Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED    Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Processing local manifest /REDACTED
Found 1 volumes in manifest
Added incremental Backupset (start_time: Sat Mar 16 13:05:52 2019 / end_time: Sat Mar 16 13:14:34 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:14:34 2019 / end_time: Sat Mar 16 13:18:29 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:18:29 2019 / end_time: Sat Mar 16 13:20:33 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:20:33 2019 / end_time: Sat Mar 16 13:27:07 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:27:07 2019 / end_time: Sat Mar 16 13:28:15 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:28:15 2019 / end_time: Sat Mar 16 13:28:47 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:28:47 2019 / end_time: Sat Mar 16 13:29:03 2019)
Added incremental Backupset (start_time: Sat Mar 16 13:29:03 2019 / end_time: Sat Mar 16 17:28:58 2019)
Added incremental Backupset (start_time: Sat Mar 16 17:28:58 2019 / end_time: Sat Mar 16 17:43:03 2019)
Added incremental Backupset (start_time: Sat Mar 16 17:43:03 2019 / end_time: Sat Mar 16 17:45:53 2019)
Last full backup date: Sat Mar 16 13:05:52 2019
Processing local manifest REDACTED
Found 1 volumes in manifest
Fatal Error: Backup source directory has changed.
Current directory: /REDACTED
Previous directory: REDACTED

Aborting because you may have accidentally tried to backup two different data sets to the same remote location, or using the same archive directory.  If this is not a mistake, use the --allow-source-mismatch switch to avoid seeing this message

Последнее предупреждение действительно верно. Я использовал дублирование на удаленном сервере, чтобы зашифровать небольшую тестовую папку. Моя цель - зашифровать полную удаленную резервную копию (которая уже существует, сделана rsync) и использовать дублирование для добавления новых зашифрованных данных.

Единственным объяснением может быть то, что разрешенное (кешированное) доменное имя и ожидаемый IP-адрес не совпадают. Итак, когда вы подключаетесь через домен - вы попадаете на другой сервер.

Пожалуйста, дважды проверьте, что домен ping предоставляет вам сервер, который вы ожидаете, и этот IP-адрес соответствует тому, который, как вы знаете, работает. Если у вас есть переадресация портов в настройках вашего маршрутизатора - вам также нужно будет дважды проверить это (т.е. вы выходите за пределы своей домашней сети, а все это внутреннее).

Если это не указывает на проблему -

1) Попробуйте добавить запись в / etc / hosts для некоторого тестового домена, который будет разрешен для вашего целевого IP-адреса, и попробуйте подключиться к этому тестовому домену. 2) Попытайтесь добавить запись в / etc / hosts для вашего целевого домена domain.myfritz.net, которая будет преобразована в ваш целевой IP. Если это поможет - то уж точно что-то с резольвером. 3) Изучите различия в поведении внутри вашей сети (используя ваш локальный IP-адрес целевого сервера за NAT) и при подключении извне (например, используя сотовую сеть), чтобы убедиться, что NAT и переадресация портов работают должным образом.