読者です 読者をやめる 読者になる 読者になる

TeraTermを絡めたSSHの多段ポートフォワード利用方法

[経緯]
踏み台を一つだけ踏む場合は、TeraTermSSH転送機能を用いれば簡単にSSHポートフォワードを行える。
これが行えれば、踏み台に一度FTPファイル転送を行い、踏み台から更に接続先にファイルを転送するみたいな不毛な事をせずに、WindowsWinscpなどを用いて直接ファイル転送を行う事ができる。
しかしながら、踏み台を二つ以上踏まないといけない場合は、TeraTermSSH転送機能だけでは残念ながら行えなさそうである(もしできるのであれば誰がご教授願います)。
素直にポートフォワードをコマンドラインから行えばいいのだが、クライアントがWindowsの場合はSSHがインストールされていない場合もある。
サーバーにさえ接続できればSSH転送を(できるユーザーアカウントを知っていれば)コマンドラインベースで入力できるので、TeraTermと組み合わした方法をメモっておく。


[想定経路]
接続先のSFTP(SSHと同じポート番号22)を用いる場合を説明する。
接続先の利用したいのがFTPであれば23、HTTPであれば80と読み替えると良い。
f:id:yoneyore:20161009204621j:plain


[方法]
1.TeraTermの[設定]-[SSH転送]を開き、以下の様なポートフォワードの設定を追加する。
 その後、[設定]-[選定の保存]を開き設定を保存し、一度TeraTermを閉じる。
f:id:yoneyore:20161009210934j:plain

2.再度TeraTermを開き、1.1.1.1経由で、2.2.2.2にアクセスする。

3.以下のコマンドを実行する。設定が誤ってなければ、接続先にログインが行われる。
 ssh -g -L 9922:3.3.3.3:22 3.3.3.3 (※1)

4.接続したコンソールを置いた状態で、Winscpなどで以下の様に接続できれば、無事接続先にポートフォワードが行われる。
f:id:yoneyore:20161009205047j:plain

※1
当例は、接続端末~踏み台2までをTeraTermでポートフォワードし、踏み台2~接続先をsshコマンドを用いてポートフォワードしている。本当は、接続端末~踏み台1までをTeraTerm、踏み台1~接続先までをコマンドで行った方が、2.の手順を簡略化できるのでそちらの方が好ましいと思われる。試した環境が踏み台1でsshコマンドを転送させる権限が無いためなのか転送が行えなかったので、一応自分で問題なく接続できた方法を記載しておく。


[その他]
ssh -Lがポートフォワードするためのオプションである。
 3.3.3.3となっている個所でSSH接続するユーザーを変更させたい場合は、username@3.3.3.3とすればよい。

・例がWinscpなのでSSHポートフォワード接続した後で、Winscp接続を行うのに利用するユーザーをどれを使うのか想像しにくいかもしれないが、Winscp接続するためのユーザー/パスワードを指定する。例えば、MySQLであればMySQLに接続するためのユーザー名/パスワードを指定すると思えば理解しやすい(ならそれを書けよという話であるが、図のキャプチャ取り直すの面倒だったので…)。

・9922とポート番号を置いているとこは、被らなければ何のポート番号を用いても構わない。なので、踏み台1と踏み台2のポート番号はわざわざ変更せずに同じのを使えばよい。自分は、元のポート番号に99を付けたり、10000や20000を足した値をよく使う。


[参考URL]
www.j-oosk.com
踏み台が1台の際のTeraTermを用いたポートフォワーディングの説明を詳細に記述してくれている。

vogel.at.webry.info
当サイトではPuttyで接続先1に接続し、踏み台1~接続先をsshコマンドで接続しており、明らかにこちらの方が効率が良い。

OpenSSH[実践]入門 (Software Design plus)

OpenSSH[実践]入門 (Software Design plus)