【问题标题】:Duplicity is arguing BackendException: ssh connection to my server:22 failed: not a valid OPENSSH private key fileDuplicity 争论 BackendException: ssh connection to my server:22 failed: not a valid OPENSSH private key file
【发布时间】:2017-08-21 07:47:19
【问题描述】:

感谢maybeg,我已经成功地将我的数据从家里备份到了外部服务器。 (亚马逊一个) 由于我不想将公司数据备份到亚马逊,我尝试使用内部备份服务器。

然后我使用了这个命令。 (我有自己的钥匙)

docker run -d     --name volumerize     
-v /MyFolder/Keys/:/MyFolder/Keys/ 
-v jenkins_volume:/source:ro     
-v backup_volume:/backup     
-e 'VOLUMERIZE_SOURCE=/source' 
-e "VOLUMERIZE_TARGET=scp://myuser@mybackupserver/home/myuser/" 
-e 'VOLUMERIZE_DUPLICITY_OPTIONS=--ssh-options "-i /MyFolder/Keys/myuserkey"'  
-e 'PASSPHRASE="mypassphrase"' blacklabelops/volumerize

在容器内部或外部使用重复备份命令时,出现以下错误

/usr/lib/python2.7/site-packages/paramiko/ecdsakey.py:200: DeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
  signature, ec.ECDSA(self.ecdsa_curve.hash_object())
BackendException: ssh connection to myuser@mybackupserver:22 failed: not a valid OPENSSH private key file

奇怪的是,在volumerize容器内部或外部,以下运行正常。

ssh -i /MyFolder/Keys/myuserkey myuser@mybackupserver
key_load_public: invalid format
Enter passphrase for key '/MyFolder/Keys/myuser':
[myuser@mybackupserver ~]$

例如,编辑备份文件给了我以下信息:

#!/bin/bash

set -o errexit

source /etc/volumerize/stopContainers
duplicity $@ --allow-source-mismatch --archive-dir=/volumerize-cache --ssh-options "-i /MyFolder/Keys/myuserkey"  /source scp://myuser@mybackupserver/home/myuser/
source /etc/volumerize/startContainers

我尝试检查容器内的环境变量,请在下面找到我所拥有的:(请注意,密码已添加为环境变量,如发现 here

HOSTNAME=b68f0e1a2d45
TERM=xterm
BLACKLABELOPS_HOME=/var/blacklabelops
GOOGLE_DRIVE_CREDENTIAL_FILE=/credentials/googledrive.cred
VOLUMERIZE_HOME=/etc/volumerize
VOLUMERIZE_SOURCE=/source
DOCKERIZE_VERSION=v0.5.0
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/etc/volumerize
VOLUMERIZE_TARGET=scp://myuser@mybackupserver/home/myuser/
PWD=/etc/volumerize
VOLUMERIZE_DUPLICITY_OPTIONS=--ssh-options "-i /MyFolder/Keys/myuserkey"
VOLUMERIZE_CACHE=/volumerize-cache
GPG_TTY=/dev/console
SHLVL=1
HOME=/root
no_proxy=*.local, 169.254/16
GOOGLE_DRIVE_SETTINGS=/credentials/cred.file
PASSPHRASE="mypassphrase"
_=/usr/bin/env

有人能指出我正确的方向吗?

问候, 皮埃尔

编辑1: 我尝试使用比较两个私钥文件(亚马逊和公司) openssl rsa -in yourkey.pem -check 都说

RSA key ok
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
....
-----END RSA PRIVATE KEY-----

编辑2: 1.在duplicity-backendexception看了一下,没有成功

  1. 供参考,Paramiko 版本为 2.2.1

  2. 使用以下python脚本连接成功。

    import paramiko
    import StringIO
    f = open('/MyFolder/Keys/myuserkey','r')
    s = f.read()
    keyfile = StringIO.StringIO(s)
    mykey =   paramiko.RSAKey.from_private_key(keyfile,password='mypassphrase')
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('mybackupserver',username='mouser',pkey=mykey)
    stdin, stdout, stderr = ssh.exec_command('uptime')
    stdout.readlines()
    

    [u' 12:35:27 up 3 days, 1:42, 0 users, load average: 1.59, 3.10, 3.00\n']

【问题讨论】:

标签: ssh duplicity


【解决方案1】:

尝试 pexpect+scp:// 后端(有关可用 ssh 后端的更多信息,请参见 duplicity 手册页 http://duplicity.nongnu.org/duplicity.1.html)。
它使用命令行 ssh 二进制文件。也许那里的错误不同或更详细?

错误

ssh -i /MyFolder/Keys/myuserkey myuser@mybackupserver
key_load_public: invalid format

看起来不太正常。尝试以正确的格式提供公钥,或者根本不提供。

..ede/duply.net

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2022-09-06
    • 2013-02-07
    • 1970-01-01
    • 2019-08-30
    相关资源
    最近更新 更多