Ruby の net-ssh で OpenSSH 8.8 以上のサーバーにアクセスできない件

Ubuntu 22.04 LTS (Jammy) の OpenSSH 8.9 な sshd に対して、OpenSSH 7.2 以降の ssh ではアクセスできるけど Rubynet-ssh ではアクセスできない件。

理由は以下の通り。

  • OpenSSH 8.8 で ssh-rsa 署名が無効化された
  • rsa 鍵は ssh-rsa 署名の他に、rsa-sha2-256rsa-sha2-512 でも署名可能
  • 実装によっては、ネゴシエーション時に利用可能とわかれば、rsa-sha2-256rsa-sha2-512 署名を使う
    • OpenSSH は 7.2 以降で対応している
    • Rubynet-ssh は現時点の最新リリース版 6.1.0 では未対応
  • 従って、
    • OpenSSH 7.2 以降の sshrsa-sha2-512 署名を使って接続可能
    • Rubynet-sshssh-rsa 署名を使うので接続失敗

詳しい説明は、ヌーラボさんの「OpenSSHがSHA-1を使用したRSA署名を廃止、BacklogのGitで発生した問題と解決にいたるまでの道のり」とそこからリンクされているサイトを参照されたし。

Rubynet-ssh で接続するには、