Ruby の net-ssh で OpenSSH 8.8 以上のサーバーにアクセスできない件
Ubuntu 22.04 LTS (Jammy) の OpenSSH 8.9 な sshd
に対して、OpenSSH 7.2 以降の ssh
ではアクセスできるけど Ruby の net-ssh
ではアクセスできない件。
理由は以下の通り。
- OpenSSH 8.8 で
ssh-rsa
署名が無効化された rsa
鍵はssh-rsa
署名の他に、rsa-sha2-256
やrsa-sha2-512
でも署名可能- 実装によっては、ネゴシエーション時に利用可能とわかれば、
rsa-sha2-256
やrsa-sha2-512
署名を使う- OpenSSH は 7.2 以降で対応している
- Ruby の
net-ssh
は現時点の最新リリース版 6.1.0 では未対応
- 従って、
- OpenSSH 7.2 以降の
ssh
はrsa-sha2-512
署名を使って接続可能 - Ruby の
net-ssh
はssh-rsa
署名を使うので接続失敗
- OpenSSH 7.2 以降の
詳しい説明は、ヌーラボさんの「OpenSSHがSHA-1を使用したRSA署名を廃止、BacklogのGitで発生した問題と解決にいたるまでの道のり」とそこからリンクされているサイトを参照されたし。
Ruby の net-ssh
で接続するには、
- HEAD を使う、もしくは対応版がリリースされるのを待つ
rsa
以外の鍵を使う- 手元の環境では
ecdsa
鍵なら追加 gem なしで接続できたecdsa
鍵には 懸念点がある そうなので、要確認
ed25519
鍵は追加 gem が必要な模様 https://github.com/net-ssh/net-ssh
- 手元の環境では