Edited at

各SSHクライアント(RLogin、Putty、Tera Term)で複数台の踏み台を超えてポートフォワーディングする方法のまとめ。


概要

各sshクライアントで多段sshポートフォワーディングのやり方をまとめました。

今回は以下の図のように複数の踏み台サーバの先にいるWindowsにリモートデスクトップ接続(3389番ポート)できるようにします。


RLoginの場合

踏み台Aに接続する設定と踏み台Bに接続する設定の二つを作っていきます。

やってることは多段SSH接続してポート転送するだけです。


  • 踏み台Aへの接続

まずは踏み台Aに普通のssh接続の設定をします。踏み台A用の接続設定を新規に作成してください。

次にプロトコル設定からポートフォワーディング設定をします。

SOCKS プロキシの設定をします。ポート番号は何でも大丈夫です。

以上で踏み台Aの設定は終了です。


  • 踏み台Bへの接続

踏み台B用の接続設定を新規に作成してください。

ここで画像右上の前接続先に踏み台Aの接続設定のエントリー名を入力してください。全ての設定を入力し終わったらProxy Serverの設定を行います。

プロキシの設定です。ポート番号は踏み台Aのポートフォワーディング設定で使用したものです。

ここまでで踏み台BにSSHはできるようになっています。

続いて踏み台Bにもポートフォワーディング設定をします。ここでlocalhost側のポート番号は自席PCで使用していない適当な番号、192.168.20.1(リモデしたいWindows)はリモデが接続するポート番号(デフフォルトは3389)です。



以上で終了です。手元のPCから接続先を「localhost:12312」とすることでリモートデスクトップ接続ができます。


Puttyの場合

まずは踏み台Aに普通にsshする設定をします。

次に踏み台Bへの接続設定です。同時に踏み台AからB経由でのWindowsマシンへのポート転送をしています。

ssh -L <踏み台Aのポート番号(任意)>::<リモデのポート番号> -g <踏み台Bへのssh接続ユーザ>@<踏み台BのIP>

です

最後に手元のPCから踏み台Aへの転送設定です。送り先に設定しているのは<踏み台のローカルアドレス>:<先ほど設定したポート番号>

です。先ほどと同じく手元のPCから接続先を「localhost:12312」とすることでリモートデスクトップ接続ができます。


Tera Termの場合

マクロで接続するようにします。

以下の内容のteraterm.ttlファイルを作成してTeraTermのマクロとして実行してください。(もっと簡単に書けるはず...)

; 手元のマシンの情報

localport = '12312'

; 踏み台Aの情報
username01 = 'root'
hostname01 = '192.168.0.1'
userpasswd01 = 'password'
portnum01 = '10022'

; 踏み台Bの情報
username02 = 'root'
hostname02 = '192.168.10.1'
userpasswd02 = 'password'

; リモートデスクトップのポート番号
portnum02 = '3389'
hostname03 = '192.168.20.1'

command = hostname01
strconcat command ':22 /ssh -L '
strconcat command localport
strconcat command ':127.0.0.1:'
strconcat command portnum01
strconcat command ' /ssh /auth=password /user='
strconcat command username01
strconcat command ' /passwd='
strconcat command userpasswd01

connect command

wait '$'

command = 'ssh -L '
strconcat command portnum01
strconcat command ':'
strconcat command hostname03
strconcat command ':'
strconcat command portnum02
strconcat command ' -g '
strconcat command username02
strconcat command '@'
strconcat command hostname02

sendln command

wait 'password'
sendln userpasswd02

先ほどと同じく手元のPCから接続先を「localhost:12312」とすることでリモートデスクトップ接続ができます。