シングルステップSSHポート転送は機能しませんが、SSHポート転送がリモートジャンプサーバーとリモートローカルホストで別々に実行されている場合にのみ適用されますか?

シングルステップSSHポート転送は機能しませんが、SSHポート転送がリモートジャンプサーバーとリモートローカルホストで別々に実行されている場合にのみ適用されますか?

このシナリオでは、3 つのシステムを検討します。

  1. Machine_A: 私のローカル MacBook
  2. Machine_B:一部のサーバーは、VPNを必要とせずにMachine Aから直接SSH経由で接続できます。 (リモートジャンプサーバー)
  3. Machine_C:ファイアウォールを持つコンピュータは、Machine_Bを介してのみアクセスできます。 (リモート保護ローカルホスト)

最終的にMachine_CでVNCserverを起動し、それをMachine_Aで見たいです。

次の例を実行して、Machine_CでVNCserverを実行する方法を見つけましたvncserver :4。現在のところ、vncviewerはうまくいきますが、やるべきことがあります。vncviewerが正常に動作するようにポート転送を有効にする2段階プロセス:

  1. 私のMachine_A端末で次を実行します。ssh -L 5904:localhost:5904 myusername@Machine_B
  2. ステップ1からMachine_BにSSHを使用するようになりました。次に、Machine_B で以下を実行します。ssh-L 5904:localhost:5904 Machine_C

localhost:4これらの2つのステップがうまくいくと、私のvncviewerが正常に実行され、vncviewerと入力してMachine_Cのvncsessionを表示しました。

しかし、2つのステップを経なければなりません。以下に示す ONE コマンドフローを記憶します。

ssh -L 5904:Machine_C:5904 myusername@Machine_B

タスクを実行する必要がありますが、動作せず、次のデバッグ応答を表示します。

debug1: Connection to port 5904 forwarding to Machine_C port 5904 requested.
debug2: fd 12 setting TCP_NODELAY
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Connection refused
debug2: channel 3: zombie
debug2: channel 3: garbage collecting
debug1: channel 3: free: direct-tcpip: listening port 5904 for Machine_C port 5904, connect from ::1 port 61702 to ::1 port 5904, nchannels 4

参考までに:

Machine_B と Machine_C の私の ~/.ssh/config ファイル:

Host *
     ForwardAgent yes
     ForwardX11 yes
     ForwardX11Trusted yes
     RhostsAuthentication yes
     RhostsRSAAuthentication yes
     RSAAuthentication yes
     TISAuthentication no
     PasswordAuthentication yes
     FallBackToRsh yes
     UseRsh no
     BatchMode no
     StrictHostKeyChecking no
     IdentityFile ~/.ssh/identity
     Port 22
     EscapeChar ~

Machine_BとMachine_Cの私の~/.vnc/xstartupファイルの設定:

#!/bin/sh


# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
/usr/bin/gnome-session --session=2d-gnome &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
#startx &i
x-window-manager &

ワンステップポート転送がssh -L 5904:Machine_C:5904 myusername@Machine_B機能しない理由についてお役に立ちますか?私は何が欠けていませんか.ssh/config

答え1

-Jssh> = 7.3(Machine_Aにのみ必要です)を使用すると、/オプションを使用してこれらの2つの手順をバックグラウンドで実行できるため、ProxyJump実行する必要がある作業が簡素化されます(実際には、この特定の例のセキュリティが向上します)。

ssh -L 5904:localhost:5904 -J myusername@Machine_B myusername@Machine_C

これは簡単であるだけでなく、以前と同じようにMachine_BからVNCにアクセスできないため、Machine_Bの他のユーザーはVNCを使用できません。

説明すると、これは同じことを行う伝統的な(安全な)方法です。

ssh -L 2222:Machine_C:22 myusername@Machine_B

Machine_Aの他の端末から:

ssh -L 5904:localhost:5904 myusername@localhost:2222

Machine_B には利用可能なトンネルエントリポイントはありません。ProxyJump-J)は、ポート2222の代わりに2つのSSHプロセス間でパイプを使用することを除いて、内部的にはほぼ同じことを行います。

SSH経由でMachine_Cにまったく接続できません。これはSSHの問題ではなく、VNCアクセス/設定の問題である可能性が高いです。 VNCがlocalhostに限定されないことは確実ですか?構成を通じてですか、それともローカルファイアウォールを介してですか?

関連情報