Poderosaを使い、SSH接続するため、Ubuntuに接続しようとしたら「インデックスが配列の境界外です」というエラーが出ました。
OS:Ubuntu Desktop 20.04 LTS
SSH接続ソフト:Poderosa5.4.2
エラーはPoderosa5が長いキーサイズを処理できないため
これはPoderosaのバージョン5で、RSA 鍵サイズが3072 ビットになっている場合に起こる現象です。
SSHサーバーには、公開鍵の指紋(finger print:フィンガープリント)と呼ばれるものがあります。
これはSSHクライアントが最初にそのSSHサーバーに接続する際に、サーバーが正しいかどうか確認します。
この時に表示される文字列の羅列が「フィンガープリント」です。
この長さが、最新の「Ubuntu」や「CentOS」などで、デフォルトの長さが2048ビットから3072ビットに変更されました。
「Poderosa5」では、この長さが増えた事により、処理できなくなったため「インデックスが配列の境界外です」と表示されるようになってしまいました。
エラーへの解決策
キーの長さを2048ビットに直す
キーサイズがエラーの原因なら、2048ビットに戻せばOKです。
念の為、現在のキーサイズを確認してみます。
# キーのサイズ確認
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
3072 SHA256:akM916H6K4MIEunQKQCFG9QnWZ7N2o4Goo1kag7frs0 root@ubuntu (RSA)
SHA256の3072ビットキーである事が確認できます。
次にこれを2048ビットのキーに置き換えますが、念の為 現在のキーペアのバックアップを取ります。
# キーペアのバックアップ
sudo mv /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.bak
sudo mv /etc/ssh/ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub.bak
次に2048ビットのキーを生成します。
# 2048ビットのキーを生成
sudo ssh-keygen -t rsa -b 2048 -C '' -f /etc/ssh/ssh_host_rsa_key
生成したキーのサイズを確認します。
# 生成したキーを確認する
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 SHA256:7MYPJd6jvR0zk0qatKJGct5cSfd29vIwkOahv4U0PJU no comment (RSA)
これで「Poderosa5」から接続できるはずです。
他のSSHクライアントを使う
キーサイズの変更でもOKですが、2021年4月現在の「Poderosa5」の最新版は2017年7月6日で更新が止まっています。
もう3年半も更新が止まっているので、できれば他のSSHクライアントを使うのも手かもしれません。
ちなみに下位バージョンの「Poderosa4」での接続は可能なようですが、やはり更新が止まっていることを考えれば、乗り換える事も考えた方が良いかもしれません。
SSHクライアントには
- Tera Term
- Putty
などの古くからある有名なクライアントソフトがあります。
またPoderosaのようにタブを使いたい場合、SSH専用クライアントではありませんが、Windowsには「Windows Terminal」という、タブで「Windows Power Shell」が利用できるものがあります。
こちらからSSHコマンドを使って接続する事も可能です。