j'utilise Paramiko pour me connecter via ssh à un serveur.
L'authentification de base fonctionne bien, mais je ne comprends pas comment se connecter avec une clé publique.
Lorsque je me connecte avec PuTTY, le serveur me dit ceci:
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 ...
Je me connecte avec ce fichier ppk:
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]
Avec l’authentification de base, l’erreur que j’obtiens (à partir du journal) est:
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']
J'ai essayé d'inclure ce fichier ppk et le mettre à auth_public_key, mais cela n'a pas fonctionné.
Pouvez-vous m'aider?
Ok @ Adam et @Kimvais avaient raison, paramiko ne peut pas analyser les fichiers .ppk.
Donc, la meilleure chose à faire (merci à @JimB) est de convertir le fichier .ppk au format de clé privée openssh; ceci peut être réalisé en utilisant Puttygen comme décrit ici .
Alors c'est très simple de se connecter avec ça:
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()
Pour moi je fais ceci:
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
travaille pour moi assez ok
Pour créer une clé privée au format DSA valide prise en charge par Paramiko dans Puttygen.
Cliquez sur Conversions puis sur Export OpenSSH Key