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

# 概要
各sshクライアントで多段sshポートフォワーディングのやり方をまとめました。
今回は以下の図のように複数の踏み台サーバの先にいるWindowsにリモートデスクトップ接続（3389番ポート）できるようにします。

![概要図.png](https://qiita-image-store.s3.amazonaws.com/0/86684/601aa5f3-f547-972c-5d48-67e92a1e6bff.png)


# RLoginの場合
踏み台Aに接続する設定と踏み台Bに接続する設定の二つを作っていきます。
やってることは多段SSH接続してポート転送するだけです。

- 踏み台Aへの接続

まずは踏み台Aに普通のssh接続の設定をします。踏み台A用の接続設定を新規に作成してください。
![rlogin踏み台A.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/f2235e79-14d5-d435-8edb-24f635a4fb1b.png)


次にプロトコル設定からポートフォワーディング設定をします。
![プロトコル.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/c1a1eea7-ca2a-e337-6b10-f92a3ed109a5.png)


SOCKS プロキシの設定をします。ポート番号は何でも大丈夫です。
![rlogin踏み台A-2.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/08a41031-d015-78e4-937a-554b5b07dfb8.png)


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

- 踏み台Bへの接続

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

![rlogin踏み台B-1.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/18927c23-5cec-3505-d6a5-f4284c15ca64.png)


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

![rlogin踏み台B-4.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/6267be71-0a3c-9ea5-efc7-2f39137a3662.png)


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

![rlogin踏み台B-2.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/984abcc6-11bd-9c5c-02c5-ae5f863bb06d.png)
![rlogin踏み台B-3.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/b4a1b475-f7ff-bc70-7ac9-12b86f19bf36.png)


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

# Puttyの場合
まずは踏み台Aに普通にsshする設定をします。

![putty-1.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/fd6ac630-3382-8f08-f064-a6c7efac37a3.png)


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

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

です

![putty-2.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/e6681b12-1a53-483e-78fb-1aae2eb744bd.png)


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

![putty-3.PNG](https://qiita-image-store.s3.amazonaws.com/0/86684/628ab91c-1b0d-7a62-1c09-4093fb5c9c77.png)


です。先ほどと同じく手元の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」とすることでリモートデスクトップ接続ができます。