#norelated
#setlinebreak(on)
#navi(../)


*SSHによるポートフォワーディング [#ra55d965]
***機能 [#de1708e8]
''実用を考えて例で説明''

· ローカルポートの転送(-L オプション)

ローカルからリモート方向へのトンネリングを実現する。


o例1 (単純なフォワーディング)

 # ssh -L 1234:hostA:22 user@hostA


ローカルホストの1234ポートにアクセスするとhostAのポート22にアクセスできる。 

o例2 (ファイアーウォールの外から内部へアクセス可能)

 # ssh -L 1234:hostB:22 user@hostA

ローカルホストの1234ポートにアクセスすると、hostA経由でhostBのポート22にアクセスできる。
直接は到達不可能なホストにもアクセス可能 

o例3 (ローカルポートのサービスを別ポートに転送)

 # ssh -L 1234:localhost:22 user@localhost

ローカルのポート22で行われているサービスを1234からもアクセス可能にする 


· リモートポートの転送(-R オプション)




リモートホストからローカル方向へのトンネリングを実現する。
例1~3までの逆方向を行えるだけで、基本的な機能は同じ。 

o例4

 # ssh -R 1234:localhost:22 user@hostA

hostAのポート1234にアクセスするとローカルホストのポート22にアクセスできる。
ローカルホストがファイアーウォール内、hostAがグローバルの場合便利。 

o例5

 # ssh -R 1234:hostB:22 user@hostA

hostAのポート1234にアクセスすると、ローカルホスト経由でhostBのポート22にアクセスできる。 

o例6

 # ssh -R 1234:localhost:22 user@localhost

結果は例3と全く同じ。 

· ポートフォワーディングを行う際に知っておきたいこと

o暗号化される経路

暗号化が行われるのはローカルホスト~リモートログイン先のホストまでである。
例2の場合、ローカルホスト~hostA間は暗号化されるが、hostA~hostB間は暗号化されない。 

oユーザーの権限と利用できるポート

§ ローカルホストの特権ポートでlistenする際にはsshコマンドの実行権限がrootと同等でなければならない。 

§ リモートホストの特権ポートでlistenする際にはリモートログイン時のユーザー権限がrootと同等でなければならない。 

· ポートフォワーディングと組み合わせると便利なオプション

oよく使うオプションの組合せ例

 # ssh -C -N -f -L 1234:hostA:22 user@hostA

このようなオプションで起動すると、ローカルホストの1234がhostAのポート22につながるようにポートフォワーディングが行われる。
加えて、-Cオプションによる圧縮、-fオプションによるバックグラウンドでの動作、-Nオプションによるリモートでのコマンド実行無し(通常はシェルが起動してしまう)という指定が可能。
簡単にまとめると、ポートフォワーディングのみを実現するプロセスが作れます。(しかもデータ圧縮をした転送)

oよく使うオプションの簡単な説明

§ セッションの圧縮 (-C オプション)

SSHを用いた通信経路において、データを圧縮した通信を行う。
設定ファイルに「圧縮レベル」や、「オプションなしでも常時圧縮」などの設定が可能。 

§ リモートでコマンドを実行しない(-N オプション)

リモートでのコマンド実行が行われないため、ポートフォワードのみを行いたい時に有効。
特に指定しない場合、SSHでのコネクションはリモートでシェルが起動する。

§ バックグラウンドで実行(-f オプション)

実行するとそれ移行バックグラウンドのプロセスとなる。
停止させるときはプロセスを探して普通にkillすればいい。 

§ プロトコルの指定 (-1 , -2 オプション)

プロトコルのバージョンを指定することができる。
数字がそのままバージョンを表している。 

§ IPバージョンの指定 (-4 , -6 オプション)

IPバージョンを指定することができる。
数字がそのままバージョンを表している。 




#navi(../)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS