このシナリオでは、3 つのシステムを検討します。
- Machine_A: 私のローカル MacBook
- Machine_B:一部のサーバーは、VPNを必要とせずにMachine Aから直接SSH経由で接続できます。 (リモートジャンプサーバー)
- Machine_C:ファイアウォールを持つコンピュータは、Machine_Bを介してのみアクセスできます。 (リモート保護ローカルホスト)
最終的にMachine_CでVNCserverを起動し、それをMachine_Aで見たいです。
次の例を実行して、Machine_CでVNCserverを実行する方法を見つけましたvncserver :4
。現在のところ、vncviewerはうまくいきますが、やるべきことがあります。vncviewerが正常に動作するようにポート転送を有効にする2段階プロセス:
- 私のMachine_A端末で次を実行します。
ssh -L 5904:localhost:5904 myusername@Machine_B
- ステップ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
-J
ssh> = 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に限定されないことは確実ですか?構成を通じてですか、それともローカルファイアウォールを介してですか?