ParamikoのSSH鍵認証でNo existing sessionエラーがでときに確認してみることのひとつはSSH鍵ファイルが古い形式ではないかどうか。

Pythonのスクリプトを書いてたらリモートサーバに接続する処理で以下のエラーに遭遇した。

  File "**********/paramiko/transport.py", line 1624, in auth_publickey
    raise SSHException("No existing session")
paramiko.ssh_exception.SSHException: No existing session

特定のサーバでのみ発生したのでサーバ側の問題かと思って検索したが特に該当するような事例はヒットせず。。。

エラーメッセージに in auth_publickey とあったのがふと目に止まりed25519形式で鍵を作り直してサーバに追加したところ、かいけーつ!
FYI: SSH鍵ファイルの生成はGitHubの「Generating a new SSH key and adding it to the ssh-agent」を参照した。

該当のサーバは大昔から使ってるやつで、SSH鍵ファイルの形式が古くてたぶんParamikoのアップデートでその形式がドロップされたんじゃないかなと。