次のスピネットを使用してサーバーに接続しようとしています
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)
しかし、エラーが発生します:
有効なRSA秘密鍵ファイルではありません
OpenSSHの最近のバージョン(7.8以降)では、デフォルトでnewOpenSSH形式でキーが生成されます。
-----BEGIN OPENSSH PRIVATE KEY-----
バージョン2.7.1(2019-12-09) 以降、そのフォーマットはParamikoによって完全にサポートされています。
古いバージョンのParamikoに行き詰まっている場合は、 ssh-keygen
を使用して、キーをclassicOpenSSH形式に変換できます。
ssh-keygen -p -f file -m pem -P passphrase -N passphrase
(キーがパスフレーズで暗号化されていない場合は、passphrase
の代わりに""
を使用してください)
Windowsユーザーの場合:Windows 10にはssh-keygen.exe
が組み込まれていることに注意してください。古いバージョンのWindowsの場合は Microsoft Win32-OpenSSHプロジェクトからダウンロード にすることができます。
Windowsでは、PuTTYgen( PuTTYパッケージ から)を使用することもできます。
ssh-keygen
を使用して新しいキーを作成している場合は、 -m PEM
を追加して、classic形式で新しいキーを生成します。
ssh-keygen -m PEM