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
それは機能するはずですか?
Ssh tunnelコマンドが入力されたマシンは、"ホスト"と呼ばれます。
ローカル:-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
マシンからアクセスできます。
リモート:-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トンネルはまったく必要ありません。
仕事用のコンピューターから自宅のコンピューターに単純に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
)。
転送するリモートディスプレイを指定する必要があります。リモートの場合:
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
例えば。
これはトンネル上のトンネルであることに注意してください。