2段階ではなく1段階で逆SSHトンネリングを有効にする(-Xを使用)

2段階ではなく1段階で逆SSHトンネリングを有効にする(-Xを使用)

3つのホストがあるとしましょう。

  • miki- 私のコンピュータはNATの背後にあります。
  • vps0- 私のVPS
  • mum- 他のNATの背後にある母親のコンピュータ。

ミッションは、私のコンピュータからお母さんに接続し、X11を配信し続けることです。これまで、私は次のようにリバーストンネリングを使用しています。

# on mum's computer (at crontab on reboot):
autossh -fN -M 3986 -R 1993:localhost:22 login@vps0

# when I want to connect to mum's computer
miki$ ssh login@vps0
vps0$ ssh localhost -p 1993

上記の方法には、X11転送(-Xパラメータ)を使用できないという欠点があります。 - リモートでウィンドウを開くことができません。

私はお母さんのコンピュータに直接接続してX11転送を維持することが可能かどうか疑問に思います。

PS。話題に答えました。中間サーバーを介したSSHトンネリング - キーペアを使用してワンステップで接続するにはどうすればよいですか?。残念ながら、このソリューションではX11転送は機能しません。

答え1

ProxyCommandこのソリューションがX11配信に機能しないのはなぜですか? X11転送を介してお母さんのコンピュータに直接接続するには、次の設定を使用してください。

Host mum
ProxyCommand ssh -q -W localhost:1993 login@vps0
ForwardX11 yes

答え2

X11の配信が何であるかを理解している場合は、@yaegashiの回答に記載されているように単純ではないことがわかります。 X11転送は、SSHの下に通常の端末トラフィックのように接続できない別の層を作成します。ただし、ポート転送を使用するとこれを行うことができます。

ベースブログ投稿、これはシェルスクリプトにハードコードされているとおりに実行されます。を使って同じことを試しましたssh_config。元のスクリプトに逆トンネリングの複雑さを追加するだけです。

sshx () {
    # create the tunnel from vps0 to your host
    sudo ssh -Nn vps0 -L 3991:vps0:1993 &
    sleep 1s
    PID=$!
    # connect to localhost on forwrded port
    ssh localhost -XYC -p3991
    sudo kill $PID
}

私はそれがあなたに役立つことを願っています

関連情報