web-dev-qa-db-ja.com

Paramiko:「有効なRSA秘密鍵ファイルではありません」

次のスピネットを使用してサーバーに接続しようとしています

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秘密鍵ファイルではありません

6
Owais Ahmad

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パッケージ から)を使用することもできます。

  • PuTTYgenを起動します
  • キーをロードする
  • Conversions> Export OpenSSH keyに移動します。
    RSAキーの場合、classic形式を使用します。

ssh-keygenを使用して新しいキーを作成している場合は、 -m PEM を追加して、classic形式で新しいキーを生成します。

ssh-keygen -m PEM
2
Martin Prikryl