ここ最近の Windows 10 であれば sshポートフォワード(SSHトンネリング)するのには、 SSHクライアントソフトを別途インストールしなくても組み込みのコマンドで実行できます。
実行するコマンド (公開鍵認証でのSSHの場合)
ssh {ssh接続用ユーザ}@{踏み台サーバのホスト} -i {秘密鍵のパス} -L {待ち受けするポート}:{転送先のホスト}:{転送先ホストのポート}
具体的な実行例は以下になります。(IPアドレスやホスト名等はある程度伏せた感じにしています)
ssh user001@40.125.XXX.XX -i C:\Users\user1\privatekey.pem -L 11433:dummy-DB-***01.database.windows.net:1433
上記例でいくと以下のようになっています。
- 踏み台とするSSHサーバ:
40.125.XXX.XX
- ローカルで待ち受けするポート:
11433
- SSHサーバ経由で実際に接続したいサーバ
- ホスト:
dummy-DB-***01.database.windows.net
- ポート:
1433
- ホスト:
この例は、Azure上のSQL Server へ SSHトンネリングして接続したい場合の設定イメージになります。
本筋とずれますが、 {秘密鍵のパス} が、ユーザディレクトリの下などではない場合、Permission denied
になることがあります。
公開範囲の狭いディレクトリ(ユーザディレクトリの下)に秘密鍵は配置してください。
正常に接続できれば、ローカルでの netstat -na
の結果に、待ち受けしたポートでの LISTENING の結果が含まれます。(以下)
PS C:\Users> netstat -na アクティブな接続 プロトコル ローカル アドレス 外部アドレス 状態 ... TCP 127.0.0.1:11433 0.0.0.0:0 LISTENING ...
この状態で、 locahost:11433
(or 127.0.0.1:11433
) へ通信すると、
SSHトンネリングされて dummy-DB-***01.database.windows.net:1433
へ転送されます。
まとめ
Windowsでもコマンド一発でsshポートフォワードできて楽ですね。