web-dev-qa-db-fra.com

Paramiko: "pas un fichier de clé privée RSA valide"

J'essaie de me connecter au serveur en utilisant l'épinette suivante

ssh = paramiko.SSHClient()
ssh.set_missing_Host_key_policy(paramiko.AutoAddPolicy())

ip = ['x.x.x.x']
key_file = "/Users/user/.ssh/id_rsa"

key = paramiko.RSAKey.from_private_key_file(key_file)
ssh.load_system_Host_keys()
ssh.connect(ips, port=22, username='XYZ', pkey=key, timeout=11)

Mais je reçois une erreur:

pas un fichier de clé privée RSA valide

6
Owais Ahmad

Les versions récentes d'OpenSSH (7.8 et plus récentes) génèrent des clés au nouveau format OpenSSH par défaut, qui commencent par:

-----BEGIN OPENSSH PRIVATE KEY-----

Ce format n'est entièrement pris en charge par le Paramiko que depuis version 2.7.1 (2019-12-09) .


Si vous êtes bloqué avec une ancienne version de Paramiko, vous pouvez utiliser ssh-keygen pour convertir la clé au format OpenSSH classic :

ssh-keygen -p -f file -m pem -P passphrase -N passphrase

(si la clé n'est pas chiffrée avec une phrase secrète, utilisez "" au lieu de passphrase)

Pour les utilisateurs de Windows: notez que ssh-keygen.exe est maintenant intégré à Windows 10. Et peut être téléchargé depuis le projet Microsoft Win32-OpenSSH pour les anciennes versions de Windows.


Sous Windows, vous pouvez également utiliser PuTTYgen (à partir de package PuTTY ):

  • Démarrez PuTTYgen
  • Charger la clé
  • Allez dans Conversions> Exporter la clé OpenSSH .
    Pour les clés RSA, il utilisera le format classique .

Si vous créez une nouvelle clé avec ssh-keygen, il suffit d'ajouter -m PEM pour générer la nouvelle clé au format classique :

ssh-keygen -m PEM
2
Martin Prikryl