「sshポートフォワーディング」の版間の差分
(ページの作成:「<!-- vim: filetype=mediawiki --> 読み方 __TOC__ == 概要 == sshコマンドでは、ポートフォワーディングをサポートしています。 ...」) |
|||
行2: | 行2: | ||
vim: filetype=mediawiki | vim: filetype=mediawiki | ||
--> | --> | ||
+ | [[ssh]]コマンドでは、[[ポートフォワーディング]]をサポートしています。 | ||
+ | [[ssh]] でトンネリングすることで、暗号化されていないプロトコルを安全に扱えます。 | ||
+ | 環境によると思いますが、外部からの接続ができない環境であってもリモートポートフォワーディングを利用すれば、接続できるケースもあります。 | ||
− | 読み方 | + | '''読み方''' |
+ | ;[[sshポートフォワーディング]]: えす えす えいち ぽーと ふぉわーでぃんぐ | ||
+ | ;ssh port forwarding: えす えす えいち ぽーと ふぉわーでぃんぐ | ||
__TOC__ | __TOC__ | ||
行10: | 行15: | ||
[[ssh]]コマンドでは、[[ポートフォワーディング]]をサポートしています。 | [[ssh]]コマンドでは、[[ポートフォワーディング]]をサポートしています。 | ||
+ | [[ssh]] でトンネリングすることで、暗号化されていないプロトコルを安全に扱えます。 | ||
+ | 環境によると思いますが、外部からの接続ができない環境であってもリモートポートフォワーディングを利用すれば、接続できるケースもあります。 | ||
+ | |||
== ポートフォワーディング == | == ポートフォワーディング == | ||
行43: | 行51: | ||
サーバからクライアントにポートフォワーディングします。 | サーバからクライアントにポートフォワーディングします。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | -R [bind_address:] | + | -R [bind_address:]in_port:hostname:goal_port |
</syntaxhighlight> | </syntaxhighlight> | ||
リモートの [[syslog]] をローカルに飛ばしてくる、といったことができます。 | リモートの [[syslog]] をローカルに飛ばしてくる、といったことができます。 | ||
行53: | 行61: | ||
-D [bind_address:]port | -D [bind_address:]port | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=== ゲートウェイポート === | === ゲートウェイポート === | ||
行62: | 行69: | ||
リモートポートフォワーディングは、サーバ側で許可が必要です。[[sshd_config]] で GatewayPorts yes と設定します。 | リモートポートフォワーディングは、サーバ側で許可が必要です。[[sshd_config]] で GatewayPorts yes と設定します。 | ||
+ | |||
+ | == 利用例 == | ||
+ | |||
+ | === ホームネットワークのsshd に外部から接続する === | ||
+ | |||
+ | フレッツなどでインターネットに接続している環境に [[Unix]] マシンがあります。 | ||
+ | レンタルサーバを借りていて、レンタルサーバから [[Unix]] マシンに接続する例です。 | ||
+ | ルーターのポートフォワーディングの設定をすればいいだけですが、ここでは、[[ssh]] のリモートポートフォワーディングを利用して実現します。 | ||
+ | |||
+ | * [[Unix]] マシンのアドレスは、 192.168.0.2 とします。 | ||
+ | * レンタルサーバは、 rental.com とします。 | ||
+ | * 両方のホストのアカウントは、foo とします。 | ||
+ | |||
+ | レンタルサーバ上の 4444 ポートを開き、そこに対する接続を 192.168.0.22 の 22 番ポートにフォワードします。 | ||
+ | ssh の接続は、192.168.0.2 から レンタルサーバに対して行います。 | ||
+ | |||
+ | # [[Unix]] マシンで下記コマンドを実行します。 | ||
+ | #: <syntaxhighlight lang="bash">% ssh -l foo 4444:192.168.0.2:22 rental.com</syntaxhighlight> | ||
+ | # レンタルサーバで 4444 ポートが利用できるようになります。 | ||
+ | # レンタルサーバで [[ssh]] を実行します。 | ||
+ | #: <syntaxhighlight lang="bash"> % ssh -l foo localhost -p 4444</syntaxhighlight> | ||
+ | |||
+ | === 多段リモートポートフォワーディング === | ||
+ | |||
+ | host1 から host2 にリモートポートフォワーディングし、host2 から host3 にリモートポートフォワーディングをします。 | ||
+ | host3 に作成したポートに接続して、host2 を経由して、 host1 の [[sshd]] に接続する例です。 | ||
+ | |||
+ | # host2 の 1111 を localhost(host1) の 22に接続します。 | ||
+ | #: <syntaxhighlight lang="bash">host1% ssh -l foo 1111:localhost:22 host2</syntaxhighlight> | ||
+ | # host3 の 2222 を localhost(host2) の 1111に接続します。 1111 のポートは、 host1 の 22 に接続されています。 | ||
+ | #: <syntaxhighlight lang="bash">host2% ssh -l foo 2222:localhost:1111 host3</syntaxhighlight> | ||
+ | # host3 の 2222 に [[ssh]] コマンドで接続します。これは、最終的に host1 の 22 の [[sshd]] に接続されます。 | ||
+ | #: <syntaxhighlight lang="bash">host3% ssh -l foo localhost -p 2222</syntaxhighlight> | ||
== 関連項目 == | == 関連項目 == |
2013年5月19日 (日) 00:27時点における版
sshコマンドでは、ポートフォワーディングをサポートしています。 ssh でトンネリングすることで、暗号化されていないプロトコルを安全に扱えます。 環境によると思いますが、外部からの接続ができない環境であってもリモートポートフォワーディングを利用すれば、接続できるケースもあります。
読み方
- sshポートフォワーディング
- えす えす えいち ぽーと ふぉわーでぃんぐ
- ssh port forwarding
- えす えす えいち ぽーと ふぉわーでぃんぐ
目次
概要
sshコマンドでは、ポートフォワーディングをサポートしています。 ssh でトンネリングすることで、暗号化されていないプロトコルを安全に扱えます。 環境によると思いますが、外部からの接続ができない環境であってもリモートポートフォワーディングを利用すれば、接続できるケースもあります。
ポートフォワーディング
ポートフォワーディングには、以下の種類があります。
- ローカル
- リモート
- ダイナミック
ローカルポートフォワーディングの例
ローカルポートフォワーディングは、 -L オプションを利用します。
-L [bind_address:]local_port:remote_hostname:remote_port
クライアントからサーバに対して、sshトンネルを作成します。
localhost:8080 と foo:80 をつなぐ。
% ssh -L 8080:foo:80 foo
8080には、ローカルホストからしか接続ができません。 ローカルホストにログインできるユーザやプロセスが8080に接続できます。
ローカルホストが hoge だとして hoge:8080 と foo:80 をつなぐ。
% ssh -L hoge:8080:foo:80 foo
hoge のアドレスにアクセスできるプロセス、ユーザからhoge:8080を利用できます。
リモートポートフォワーディング
サーバからクライアントにポートフォワーディングします。
-R [bind_address:]in_port:hostname:goal_port
リモートの syslog をローカルに飛ばしてくる、といったことができます。
ダイナミックアプリケーションレベルポートフォワーディング
ssh は、SOCKS4, SCOKS5 プロトコルをサポートしています。
-D [bind_address:]port
ゲートウェイポート
ポートフォワーディングは、デフォルトでは、別のホストから接続できません。 ssh に -g オプションをつけることで、0.0.0.0 でバインドするため、リモートからでも接続可能になります。
リモートポートフォワーディングは、サーバ側で許可が必要です。sshd_config で GatewayPorts yes と設定します。
利用例
ホームネットワークのsshd に外部から接続する
フレッツなどでインターネットに接続している環境に Unix マシンがあります。 レンタルサーバを借りていて、レンタルサーバから Unix マシンに接続する例です。 ルーターのポートフォワーディングの設定をすればいいだけですが、ここでは、ssh のリモートポートフォワーディングを利用して実現します。
- Unix マシンのアドレスは、 192.168.0.2 とします。
- レンタルサーバは、 rental.com とします。
- 両方のホストのアカウントは、foo とします。
レンタルサーバ上の 4444 ポートを開き、そこに対する接続を 192.168.0.22 の 22 番ポートにフォワードします。 ssh の接続は、192.168.0.2 から レンタルサーバに対して行います。
- Unix マシンで下記コマンドを実行します。
-
% ssh -l foo 4444:192.168.0.2:22 rental.com
-
- レンタルサーバで 4444 ポートが利用できるようになります。
- レンタルサーバで ssh を実行します。
-
% ssh -l foo localhost -p 4444
-
多段リモートポートフォワーディング
host1 から host2 にリモートポートフォワーディングし、host2 から host3 にリモートポートフォワーディングをします。 host3 に作成したポートに接続して、host2 を経由して、 host1 の sshd に接続する例です。
- host2 の 1111 を localhost(host1) の 22に接続します。
-
host1% ssh -l foo 1111:localhost:22 host2
-
- host3 の 2222 を localhost(host2) の 1111に接続します。 1111 のポートは、 host1 の 22 に接続されています。
-
host2% ssh -l foo 2222:localhost:1111 host3
-
- host3 の 2222 に ssh コマンドで接続します。これは、最終的に host1 の 22 の sshd に接続されます。
-
host3% ssh -l foo localhost -p 2222
-