web-dev-qa-db-ja.com

sshトンネリングの説明

Sshトンネリングについて質問があります。私はこの記事を読みました

X転送を機能させ、自宅でいくつかのXアプリケーションを実行して、リモートシステムに表示させたいと思います。

 ssh -X -R 5555:localhost:22 [email protected] -N

リモートの場合:

 ssh -X -p 5555 [email protected]

それから家で:

 //configure sshd to listen on 5555
 ssh [email protected]
 //here run some app

それは機能するはずですか?

8
wawa235

スケッチをいくつか描きました

Ssh tunnelコマンドが入力されたマシンは、"ホスト"と呼ばれます。

ssh tunnel starting from local


ssh tunnel starting from remote

前書き

  1. ローカル:-L Specifies that the given port on the local (client) Host is to be forwarded to the given Host and port on the remote side.

    _ssh -L sourcePort:forwardToHost:onPort connectToHost_は、sshを使用してconnectToHostに接続し、すべての接続試行をlocalsourcePortからonPortというマシンのポートforwardToHostに転送することを意味します。 connectToHostマシンからアクセスできます。

  2. リモート:-R Specifies that the given port on the remote (server) Host is to be forwarded to the given Host and port on the local side.

    _ssh -R sourcePort:forwardToHost:onPort connectToHost_は、sshを使用してconnectToHostに接続し、すべての接続試行をremotesourcePortからonPortというマシンのポートforwardToHostに転送することを意味します。ローカルマシンからアクセスできます。

あなたの例

X転送のみを機能させたい場合、つまり、自宅のコンピューターでいくつかのXアプリケーションを実行し、それらをリモートシステムに表示したい場合(職場にある可能性があるため、これを作業用コンピューターと呼びましょう)、おそらくsshトンネルはまったく必要ありません。

Xアプリケーションを起動しますなしトンネル

仕事用のコンピューターから自宅のコンピューターに単純にSSH接続できますか?もしそうなら、あなたが仕事用コンピュータに座っているそしてXアプリケーションを起動したいとき自宅のコンピュータで実行しかし仕事用コンピュータに表示する =、(仕事用コンピューターで)入力する必要があります:

ssh -X homeuser @ homecomputer firefox

これにより、自宅のコンピューターでFirefoxが起動し、このコマンドを入力したマシンに表示されます。あなたの仕事用コンピュータ。

隠されたコンピューターにはトンネルが必要

これは私のスケッチの画像番号3です。多くの場合、自宅のコンピューターはファイアウォールの背後にあるか、 [〜#〜] nat [〜#〜] (ルーターから)を介して隠されているため、インターネットから直接アクセスできません。次に、トンネルを使用できます。

blue自宅のコンピューター(yourhost)で、次のように入力します。

_ssh -R 5555:localhost:22 remoteuser@remotehost
_

ここで、_5555_は緑のポートで、_22_は画像のピンクのポートです。

現在、remotehostで作業していて、緑色のポート_5555_に接続している場合、接続は、自宅のコンピューターのlocalhost(つまり、blue home)のピンク色のポートにトンネリング/転送されます。コンピューター自体)。次に、仕事用のコンピューターに入力する必要があります。

_ssh -X -p 5555 homeuser@localhost firefox
_

これにより、自宅のコンピューター(yourhost)でFirefoxが起動し、このコマンドを入力したマシンに表示されます。仕事用コンピューター(remotehost)。

9
erik

転送するリモートディスプレイを指定する必要があります。リモートの場合:

DISPLAY=:0 ssh -X -p 5555 user@localhost # not sure why you used 192.168.1.2

:0表示を転送します。

次に、そのシェル(現在はホ​​ームマシンで実行されています)で、次のコマンドを実行します。

echo "$DISPLAY"

転送された表示とは何かを確認します。これはlocalhost:10のようになります。つまり、リモートマシンのディスプレイ:0に接続するには、ポート6010でTCP接続)を実行する必要があります(:0/tmp/.X11-unixのようなUnixドメインソケットに接続することを意味します)

次に、マシン上のアプリケーションをリモートサーバーのディスプレイに表示するには、localhost:10を使用するように指示するだけです。

DISPLAY=localhost:10 xlogo

例えば。

これはトンネル上のトンネルであることに注意してください。

1