Edited at

ポートフォワーディング

More than 3 years have passed since last update.

ポートフォワーディングについてのメモです.

いろいろできそうなので書いてみました.

あ,初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