SSHによるポートフォワーディング

機能

実用を考えて例で説明

· ローカルポートの転送(-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バージョンを指定することができる。
数字がそのままバージョンを表している。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-03 (水) 21:45:50 (704d)