当前位置: 动力学知识库 > 问答 > 编程问答 >

How to ssh connect through python Paramiko with public key

问题描述:

i'm using Paramiko to connect through ssh to a server.

Basic authentication works well, but i can't understand how to connect with public key.

When i connect with putty, the server tell me this:

Using username "root".

Authenticating with public key "[email protected]"

Passphrase for key "[email protected]": [i've inserted the passphrase here]

Last login: Mon Dec 5 09:25:18 2011 from ...

I connect to it with this ppk file:

PuTTY-User-Key-File-2: ssh-rsa

Encryption: aes256-cbc

Comment: [email protected]

Public-Lines: 4

[4 lines key]

Private-Lines: 8

[8 lines key]

Private-MAC: [hash]

With basic auth the error i get (from the log) is:

DEB [20111205-09:48:44.328] thr=1 paramiko.transport: userauth is OK

DEB [20111205-09:48:44.927] thr=1 paramiko.transport: Authentication type (password) not permitted.

DEB [20111205-09:48:44.927] thr=1 paramiko.transport: Allowed methods: ['publickey', 'gssapi-with-mic']

I've tried to include that ppk file and set to auth_public_key, but didn't work.

Can you help me?

网友答案:

Ok @Adam and @Kimvais were right, paramiko cannot parse .ppk files.

So the way to go (thanks to @JimB too) is to convert .ppk file to openssh private key format; this can be achieved using Puttygen as described here.

Then it's very simple getting connected with it:

import paramiko
ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('<hostname>', username='<username>', password='<password>', key_filename='<path/to/openssh-private-key-file>')

stdin, stdout, stderr = ssh.exec_command('ls')
print stdout.readlines()
ssh.close()
网友答案:

-- look;for me I doing this:

import paramiko
hostname = 'my hostname or IP' 
myuser   = 'the user to ssh connect'
mySSHK   = '/path/to/sshkey.pub'
sshcon   = paramiko.SSHClient()  # will create the object
sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy())# no known_hosts error
sshcon.connect(hostname, username=myuser, key_filename=mySSHK) # no passwd needed

-- works for me pretty ok

网友答案:

To create a valid DSA format private key supported by Paramiko in Puttygen.

Click on Conversions then Export OpenSSH Key

分享给朋友:
您可能感兴趣的文章:
随机阅读: