LoginSignup
100
67

More than 5 years have passed since last update.

ポートフォワーディング

Last updated at Posted at 2015-02-22

ポートフォワーディングについてのメモです.
いろいろできそうなので書いてみました.
あ,初Qiitaです.どうも.

とは?

PCaの特定のポート1に送られてきたデータを,PCbのポート2に送信する.
つまり,PCaのポート1とPCbのポート2に繋ぐ.

環境(例えば)

社内のネットワークを例に考える.
例えば,このとき,手持ちのPCから社内のPCを画面共有したい.

環境
hoge@client.jp 手持ちのPC
hoge@server.co.jp 社内へのsshサーバー
clientからsshでアクセス可能.
hoge@target.co.jp 社内のPC
外部からアクセスできない.

おまけ(踏み台でのssh接続)

二段階でのssh接続

$ ssh hoge@server.co.jp
$ ssh hoge@target.co.jp

かっこわるい.一発で繋ぎたい.

踏み台でのssh接続

~/.ssh/config
Host server
   HostName server.co.jp
   User hoge
Host proxy_target
   HostName target.co.jp
   User hoge
   ProxyCommand ssh -W %h:%p server
$ ssh proxy_target

configでの実行が便利.

ポートフォワーディング

クライアント側からターゲットに繋ぎにいく
Address1(User1)を経由し,clientPortAAddress2PortBを飛ばす.
(実行したshellは,Address1User1にログインした状態になる)

コマンドのみ
$ ssh <User1>@<Address1> -L <PortA>:<Address2>:<PortB>
configによる実行

Nameは任意の名前.

~/.ssh/config
Host NAME
    HostName Address1
    User User1
    LocalForward PortA Address2:PortB 
$ ssh NAME

ポイント

  • Address2は,Address1から見えるパスであること.
    • Address1==Adress2の場合,Address2=localhostとなる.
  • PortAは0~1023(特権ポート)は使えない.
    • PortBは飛ばしたいPortなので,好きなポートを使える.

例(画面共有)

targetの5900番ポート(vncポート)をclientの55900番ポートに転送する.
Windowの場合,3389番ポート(RDP)を使用する.

コマンドのみ
$ ssh hoge@server.co.jp -L 55900:hoge@target.co.jp:5900
configによる実行
Host test_vnc
    HostName server.co.jp
    User hoge
    LocalForward 55900 hoge@target.co.jp:5900
$ ssh test_vnc
vncの実行
$ open vnc://localhost:55900/

リモートポートフォワーディング
(逆ポートフォワーディング)

経由サーバーがターゲットをクライアントに飛ばす.
経由サーバーから実行する.
Address1(User1)を経由し,clientPortAAddress2PortBを飛ばす.
(実行したshellは,ClinetUser2にログインした状態になる)

コマンドのみ
$ ssh <User2>@<Client> -R <PortA>:<Address2>:<PortB>
configによる実行

Nameは任意の名前.

~/.ssh/config
Host NAME
    HostName <Client>
    User User2
    RemoteForward PortA Address2:PortB 
$ ssh NAME

例(sshポートを外のサーバーへと飛ばす)

targetの22番ポート(vncポート)をclientの60022番ポートに転送する.

コマンドのみ
$ ssh hoge@client.co.jp -L 60022:hoge@target.co.jp:22
configによる実行
Host test_ssh
    HostName client.co.jp
    User hoge
    RemoteForward 60022 hoge@target.co.jp:22
$ ssh test_ssh
ssh接続の実行
$ ssh hoge@localhost -p 60022

ダイナミックポートフォワーディング

socks proxyとしてsshを利用する.
サーバーを経由して,ブラウジングができる.

コマンドのみ
$ ssh -D <Port> <User1>@<Address2>
configによる実行

Nameは任意の名前.

~/.ssh/config
Host NAME
    HostName Address2
    User User1
    DynamicForward PortA
$ ssh NAME
100
67
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
67