我正在尝试将我的第一个 duplicity 备份上传到远程服务器,但失败了。这是我第一次使用该工具,之前它没有用过。
duplicity /home/me/Documents/ scp://me@<ip-address>//home/me/bak
这是我得到的答案:
BackendException: ssh connection to me@<ip-address>:22 failed: Private key file is encrypted
DEBUG:duplicity:BackendException: ssh connection to me@<ip-address>:22 failed: Private key file is encrypted
通过 登录ssh
可以正常工作。
我搜索了网络,但找不到任何可能的解决方案。我唯一的直觉是,这可能与我的.ssh
目录有关:其中包含多个身份,因此包含多个.pub
关键文件
编辑:-v 9
我得到以下输出(更多,但只显示最后一部分):
ssh: Kex agreed: [email protected]
DEBUG:sshbackend:Kex agreed: [email protected]
ssh: HostKey agreed: ssh-ed25519
DEBUG:sshbackend:HostKey agreed: ssh-ed25519
ssh: Cipher agreed: aes128-ctr
DEBUG:sshbackend:Cipher agreed: aes128-ctr
ssh: MAC agreed: hmac-sha2-256
DEBUG:sshbackend:MAC agreed: hmac-sha2-256
ssh: Compression agreed: none
DEBUG:sshbackend:Compression agreed: none
ssh: kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
DEBUG:sshbackend:kex engine KexCurve25519 specified hash_algo <built-in function openssl_sha256>
ssh: Switch to new keys ...
DEBUG:sshbackend:Switch to new keys ...
Using temporary directory /tmp/duplicity-O8U6r5-tempdir
Level 5:duplicity:Using temporary directory /tmp/duplicity-O8U6r5-tempdir
Backend error detail: Traceback (innermost last):
File "/usr/bin/duplicity", line 1581, in <module>
with_tempdir(main)
File "/usr/bin/duplicity", line 1567, in with_tempdir
fn()
File "/usr/bin/duplicity", line 1406, in main
action = commandline.ProcessCommandLine(sys.argv[1:])
File "/usr/lib/python2.7/site-packages/duplicity/commandline.py", line 1140, in ProcessCommandLine
backup, local_pathname = set_backend(args[0], args[1])
File "/usr/lib/python2.7/site-packages/duplicity/commandline.py", line 1015, in set_backend
globals.backend = backend.get_backend(bend)
File "/usr/lib/python2.7/site-packages/duplicity/backend.py", line 223, in get_backend
obj = get_backend_object(url_string)
File "/usr/lib/python2.7/site-packages/duplicity/backend.py", line 209, in get_backend_object
return factory(pu)
File "/usr/lib/python2.7/site-packages/duplicity/backends/ssh_paramiko_backend.py", line 240, in __init__
self.config['port'], e))
BackendException: ssh connection to me@<ip-address>:22 failed: Private key file is encrypted
但没有告诉我更多
答案1
似乎 paramiko 后端目前不支持为您的密钥提供密码。
如果可能的话尝试pexpect+scp://
或更好pexpect+sftp://
或者通过以下方式指定要使用的密钥
--ssh-options="-oIdentityFile='/my/backup/id'"
并确保它是不是受密码保护。
..ede/duply.net
答案2
实际起作用的是使用rsync
后端。
最终令人惊讶的是,我不知道为什么scp
后端不工作,因为纯粹的scp
工作也是如此。
我不会接受我自己的答案,因为它并不是问题的真正解决方案,只是一种解决方法。但至少我现在可以使用它。
答案3
我在密码密钥方面也遇到了类似的问题。将密钥设置为以下两个环境变量可以帮我解决这个问题FTP_PASSWORD
:PASSPHRASE
https://duplicity.readthedocs.io/en/latest/duplicity.backends.ssh_paramiko_backend.html