"expected key exchange group packet from server" ってなんだよ
ポートフォワーディングを設定する際、毎回スクリプトをバックグラウンドで起動させているのがかっこ悪い…と思い、
業務でも使っているSSH Tunnel Managerを利用することにしました。
ですが、cliと同じ内容を設定しているはずなのに、
というエラーが出て一向に成功しなかったので、対処法のメモ。
結論としては、SSH Tunnel Managerが「バージョンの古い」「PuTTYを利用している」のが原因でした。
対処
前提
【環境】
クライアント:Windows 10
サーバ:Windows 10(OpenSSHを利用)
【状態】
CLIでのポートフォワーディングは成功している、つまり
・ファイアウォールの穴あけは完了
・公開鍵の設定、秘密鍵の格納は完了
・アドレスやポートの誤りではない
対処1. 秘密鍵をPuTTY用のフォーマットに変換する。
原因のうち、「PuTTYを利用している」の部分に該当する箇所です。
考えてみれば当然ですが、OpenSSHなんてものがWindowsに搭載されたのはつい最近のことで、
Windowsでssh接続を行うにはPuTTYを利用する必要があります。
ただ、PuTTYでの鍵交換するときの秘密鍵には*.ppkという固有のフォーマットがあるため、
SSH Tunnel Managerの秘密鍵にもそれを登録する必要があります。
PuTTY形式への変換の具体的な手順は下記サイト様が詳しいです。
https://mseeeen.msen.jp/convert-ssh-secret-key-from-rsa-to-putty/
ざっくり説明すると、ダウンロードサイトからputtygen.exeをダウンロード⇒変換です。
上記サイトではTeraTermの場合の説明をしており、TeraTermではファイル形式が違っても(面倒なだけで)大丈夫、と書いてありますが、
SSH Tunnel Managerでは駄目みたいですね。
対処2. SSH Tunnel Managerのplink.exeのバージョンを最新化する。
原因のうち、「バージョンの古い」の部分に該当する箇所です。
下記サイト様にもありますように、アプリケーションが利用しているplink.exeのバージョンが古いとエラーになるそうです。
http://tayu.github.io/xming/pklink/2016/07/27/Xming-error/
対処法としては、
- ダウンロードサイトからplink.exeをダウンロード
- "SSH Tunnel Manager\Tools\plink.exe"をダウンロードしてきたplink.exeに置き換える
- 念のためSSH Tunnel Managerを再起動
になります。
まとめ
- 秘密鍵は.ppkに変換
- plink.exe は最新化する