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
- 手元の環境では