2017-08-23 42 views
0

私はこれに対する解決策を見つけようとしており、私が間違っていることを理解できません。私のLinuxサーバ上paramiko - 秘密鍵で接続してください - 有効なOPENSSH秘密/公開鍵ファイルではありません

私は、次のコマンドを実行しています

ssh-keygen -t rsa 

これはid_rsaid_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秘密鍵ファイルです。

編集 - 私は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 

WTH?

答えて

1

私はここに私がやったことの要約である、paramiko RSA鍵認証のセットアップを実行している:

  • ランのssh-keygenは-t rsaのid_rsaとし、id_rsa.pubファイルを生成するために

  • ( ターゲットシステム上)の〜/ .ssh/authorized_keysににid_rsa.pubの

    コピーコンテンツ

  • 012クライアント・マシン上にid_rsaと(プライベート)キーファイルをコピーします
  • (ターゲットに私はの.ssh/authorized_keysにし、上の644のモード755を持っている)

次のコードは、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) 

(paramikoクライアントはプライベートキーファイルを使用しています)これはすべてPython 2.7上にあります。私はこれのいくつかまたはすべてが役に立つかもしれないことを願っています。

+0

ありがとうございます!これが有効であることを確認した私は、大きな部分は私が 'authorized_hosts'部分を欠いていたと信じています。 – whoisearth

関連する問題