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
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 ):
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