#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(../)