当我使用私钥进行连接时,Duplicity 恢复报告“无效的 SSH 密码”

当我使用私钥进行连接时,Duplicity 恢复报告“无效的 SSH 密码”

我正在测试使用 duplicity 0.6.15 恢复备份。

我可以使用以下命令和我的私钥通过 ssh 和 sftp 登录到我的备份服务器:

...sftp

root@client:~# sftp -oPort=7843 [email protected]
Enter passphrase for key '/root/.ssh/id_rsa':
Connected to 192.168.x.x
sftp> exit

...ssh

root@client:~# ssh -p7843 [email protected]
Enter passphrase for key '/root/.ssh/id_rsa':
Connected to 192.168.x.x
Last Login: ....

我有以下恢复脚本,用于恢复签名和加密备份的内容:

#!/bin/bash
export SIGN_PASSPHRASE='<signed-key-passphrase'
export PASSPHRASE='<encryption-passphrase>'

duplicity -v9 --encrypt-key="<encryption-key-id>" --sign-key="<signed-key-id>" --force \
scp://[email protected]:7843//home/backupUser/backup /mnt/restore

但是当我运行脚本duplicity时:

root@client~#: ./restore_script.sh

当 duplicity 尝试登录到我的备份服务器时,Duplicity 给出了以下错误:

Using archive dir: /root/.cache/duplicity/b1a470f45b67cd7784bc8e6449383df7
Using backup name: b1a470f45b67cd7784bc8e6449383df7
Import of duplicity.backends.hsibackend Succeeded
Import of duplicity.backends.ftpbackend Succeeded
Import of duplicity.backends.botobackend Succeeded
Import of duplicity.backends.rsyncbackend Succeeded
Import of duplicity.backends.imapbackend Succeeded
Import of duplicity.backends.localbackend Succeeded
Import of duplicity.backends.giobackend Succeeded
Import of duplicity.backends.ftpsbackend Succeeded
Import of duplicity.backends.cloudfilesbackend Succeeded
Import of duplicity.backends.gdocsbackend Succeeded
Import of duplicity.backends.tahoebackend Succeeded
Import of duplicity.backends.u1backend Succeeded
Import of duplicity.backends.webdavbackend Succeeded
Import of duplicity.backends.sshbackend Succeeded
Main action: restore
================================================================================
duplicity 0.6.15 (August 19, 2011)
Args: /usr/bin/duplicity -v9 --encrypt-key=<encryption-key-id> --sign-key=<signature-key-id> --force scp://[email protected]:7843//home/backupUser/backup /mnt/restore
Linux client 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:50:42 UTC 2011 i686 i686
/usr/bin/python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1]
================================================================================
Using temporary directory /tmp/duplicity-sLukkP-tempdir
Registering (mkstemp) temporary file /tmp/duplicity-sLukkP-tempdir/mkstemp-12JD0o-1
Temp has 4995375104 available, backup will use approx 34078720.
Running 'sftp  -oPort=7843 -oServerAliveInterval=15 -oServerAliveCountMax=2 [email protected]' (attempt #1)
State = sftp, Before = 'Enter'
State = sftp, Before = ''
Invalid SSH password
Running 'sftp  -oPort=7843 -oServerAliveInterval=15 -oServerAliveCountMax=2 [email protected]' failed (attempt #1)
Removing still remembered temporary file /tmp/duplicity-sLukkP-tempdir/mkstemp-12JD0o-1
INT intercepted...exiting.

我的目录中有一个公钥.ssh,它应该允许 duplicity 使用该公钥登录,而不是要求输入 ssh 密码(无论如何我已经在服务器上关闭了它),所以我不明白为什么服务器不允许 duplicity 登录。

这是我的客户列出的.ssh目录、权限和所有内容:

root@client:~# ls -la /root/.ssh
total 16
drwx------ 2 root root 4096 2011-11-29 01:05 .
drwx------ 8 root root 4096 2011-11-29 12:30 ..
-rw------- 1 root root 1766 2011-11-29 01:06 id_rsa
-rw-r--r-- 1 root root  442 2011-11-29 00:38 known_hosts

我是不是漏掉了什么?我的备份工作得很好,我想先测试一下恢复备份,然后再决定是否恢复。

答案1

好的,我明白了。为了让 duplicity 输入 ssh 密钥的密码,(不是必须安装并配置.gpg 加密密钥 (用于 gpg 加密密钥) keychain,并且必须使用命令添加密钥ssh-add

我需要安装keychain,所以我就安装了一下,

然后添加我将其添加到我的.bash_profile类似如下内容:

keychain --clear id_rsa
. ~/.keychain/$HOSTNAME-sh

现在假设我的公钥与我的私钥一起存储在/root/.ssh目录中,当我切换用户时,root我第一次收到一个错误,但之后我运行ssh-addexit退出帐户,然后root再次以身份登录。

当我返回帐户时root,系统会要求我输入 ssh 私钥的密码。现在 duplicity 似乎可以正常工作了……无论如何,只要连接到其他服务器……我不再收到Invalid SSH Password之前收到的消息。

相关内容