トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

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


Windows でのポートフォワードのツール

http://www.fuji-climb.org/pf/JP/
PortForwarder-2.9.zip(748)

コマンドによるポートフォワード

http://www.sb.soft.iwate-pu.ac.jp/~yushi/memo/ssh_port_forward.html
内容そのまま。

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

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

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

% ssh -L 1234:hostA:22 user@hostA
ローカルホストの1234ポートにアクセスするとhostAのポート22にアクセスできる。

例2 (ファイアーウォールの外から内部へアクセス可能)
% ssh -L 1234:hostB:22 user@hostA

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

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

% ssh -L 1234:localhost:22 user@localhost
ローカルのポート22で行われているサービスを1234からもアクセス可能にする

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

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

例4
% ssh -R 1234:localhost:22 user@hostA

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

例5
% ssh -R 1234:hostB:22 user@hostA

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

例6

% ssh -R 1234:localhost:22 user@localhost
結果は例3と全く同じ。

 ダイナミック転送

ダイナミック転送

 ポートフォーワードのセキュリティ

ssh サーバを 192.168.0.1
sshの接続元を 192.168.0.2
sshの転送先を 192.168.0.3
とする。

ローカル転送

192.168.0.2 上で
ssh -L 9999:192.168.0.3:9999 192.168.0.1

とポートフォワードした場合、

ssh_configでGatewayPorts no または、 -g オプションなし
の場合は、
192.168.0.2上で localhost:9999 のみポートフォワードを受け付ける。
192.168.0.2:9999 の記述は内部、外部問わずポートフォワードを受け付けない。

ssh_configでGatewayPorts yes または、 -g オプションをつけると localhost 以外からの接続もポートフォワード可能になる。

リモート転送

192.168.0.2上で
192.168.0.2# ssh -R 9999:192.168.0.3:9999 192.168.0.1

とポートフォワードした場合、

192.168.0.1上で localhost:9999 のみのポートフォワードを受け付ける。
192.168.0.1:9999 の記述は内部、外部問わずポートフォワードを受け付けない。

sshd_configでGatewayPorts yesとすると、外部からの接続もポートフォワード可能になる。

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

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

ユーザーの権限と利用できるポート
ローカルホストの特権ポートでlistenする際にはsshコマンドの実行権限がrootと同等でなければならない。
リモートホストの特権ポートでlistenする際にはリモートログイン時のユーザー権限がrootと同等でなければならない。

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

[カテゴリ: ネットワーク]


  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2015年01月15日 20時45分53秒