Paramic. - 连接使用封闭键 - 这没用 OPENSSH 私人的/公钥文件。

我正试图找到解决这个问题的解决方案,我无法理解我做错了什么。

在我的服务器上 Linux 我完成了以下命令:


ssh-keygen -t rsa


这创建了一个文件
id_rsa


id_rsa.pub

.

然后我在本地复制它们并尝试启动以下代码:


ssh = paramiko.SSHClient//
ssh.set_missing_host_key_policy/paramiko.AutoAddPolicy///
ssh.connect/'myserver', username='myuser', key_filename='id_rsa'/
sftp = ssh.open_sftp//
sftp.chdir/'/path/to/file'/
sftp.get/file, os.path.join/tmp_dir, '{0}.existing-{1}'.format/'myfile', current_datetime///
except Exception, err:
logging.debug/err/
logging.info/'Error connecting to Host'/


我在我的日记中获得以下错误:


2017-08-22 22:41:54,486 Switch to new keys ...
2017-08-22 22:41:54,502 Adding ssh-ed25519 host key for myserver.domain.com: 51ac2fe875499371256dd8c5a132f394
2017-08-22 22:41:54,502 Trying key 7688e32d30edb2c94bfe39be9897004f from id_rsa
2017-08-22 22:41:54,532 userauth is OK
2017-08-22 22:41:54,549 Authentication /publickey/ failed.
2017-08-22 22:41:54,563 not a valid OPENSSH private key file
2017-08-22 22:41:54,563 Error connecting to Host
2017-08-22 22:41:54,657 EOF in transport thread


我错过了什么? 这是一个有效的封闭密钥文件。 OPENSSH.

edit - 如果我用
id_rsa.pub

, 我得到以下内容:


2017-08-22 22:58:09,631 Kex agreed: ecdh-sha2-nistp256
2017-08-22 22:58:09,631 HostKey agreed: ssh-ed25519
2017-08-22 22:58:09,631 Cipher agreed: aes128-ctr
2017-08-22 22:58:09,631 MAC agreed: hmac-sha2-256
2017-08-22 22:58:09,631 Compression agreed: none
2017-08-22 22:58:09,694 kex engine KexNistp256 specified hash_algo <built-in function="" openssl_sha256="">
2017-08-22 22:58:09,710 Switch to new keys ...
2017-08-22 22:58:09,726 Adding ssh-ed25519 host key for myserver.domain.com: 51ac2fe875499371256dd8c5a132f394
2017-08-22 22:58:09,726 not a valid OPENSSH private key file
2017-08-22 22:58:09,726 Error connecting to Host
2017-08-22 22:58:09,819 EOF in transport thread


为什么?
</built-in>
已邀请:

小姐请别说爱

赞同来自:

你可以转换 id_rsa 处于封闭的关键类型 RSA 通过

ssh-keygen

. 我遇到了类似的情况,它为我工作。



变形

"BEGIN OPENSSH PRIVATE KEY" 在 "BEGIN RSA PRIVATE KEY":


ssh-keygen -p -m PEM -f ~/.ssh/id_rsa

诸葛浮云

赞同来自:

我有一个运行的关键身份验证设置 Paramiko RSA. 这是我所做的摘要:

发射 ssh-keygen -t rsa, 要生成文件 id_rsa 和 id_rsa.pub

复制内容 id_rsa.pub 在 ~/.ssh/authorized_keys /在
目标系统/

复制 id_rsa /关闭/ 客户机上的钥匙

/在我的目标上,我有模式 755 在 .ssh/ 和 644 在 authorized_keys/

以下代码启动登录 Paramiko:


import logging
import paramiko

logger = paramiko.util.logging.getLogger//
hdlr = logging.FileHandler/'app.log'/
formatter = logging.Formatter/'%/asctime/s %/levelname/s %/message/s'/
hdlr.setFormatter/formatter/
logger.addHandler/hdlr/
logger.setLevel/logging.INFO/

try:
ssh = paramiko.SSHClient//
ssh.set_missing_host_key_policy/paramiko.AutoAddPolicy///
k = paramiko.RSAKey.from_private_key_file/'id_rsa'/
ssh.connect/'160.100.28.216', username='edwards', pkey = k/
sftp = ssh.open_sftp//
sftp.chdir/'/home/edwards'/
except Exception, err:
logging.debug/err/
logging.info/'Error connecting to Host'/


在文件中 app.log 以下显示:


2017-08-23 16:52:33,154 INFO Connected /version 2.0, client OpenSSH_6.6.1/
2017-08-23 16:52:46,926 INFO Authentication /publickey/ successful!
2017-08-23 16:52:47,203 INFO [chan 0] Opened sftp connection /server version 3/


/NB: 客户 Paramiko 使用封闭的键文件。/ 这是所有的了 Python 2.7.

要回复问题请先登录注册