Ubuntu 12.10でサーバーをセットアップしています。 SSHポートフォワーディングということを除いて、すべてがうまく機能しました。
次のコマンドを使用して、VNCサーバーをPCに転送します。
ssh -L 5900:node:5900 adminuser@server
それは非常にうまくいきます。
ただし、これは他のユーザーには当てはまりません。
ssh -L 5900:node:5900 someotheruser@server
このユーザーはサーバーに接続できます(ログインして何かを実行できます)が、ポートはnot転送されます。つまり、gvncviewer localhost
は終了しません(たとえばサーバーに接続しましたが、パスワードを要求することはありません)。
他の(または選択した)ユーザーの転送を許可するために何をする必要がありますか?
編集:ssh -vv ...
の使用gvncviewer localhost
を呼び出し、adminuserを使用して接続すると、次のメッセージが表示されます。
debug1: Connection to port 5900 forwarding to 10.100.0.8 port 5900 requested.
debug2: fd 9 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug1: channel 3: new [direct-tcpip]
debug2: channel 3: open confirm rwindow 2097152 rmax 32768
... -----> It works
someotheruserの場合:
debug1: Connection to port 5900 forwarding to 10.100.0.8 port 5900 requested.
debug2: fd 9 setting TCP_NODELAY
debug2: fd 9 setting O_NONBLOCK
debug1: channel 3: new [direct-tcpip]
-----> Here it hangs for a long time...
channel 3: open failed: connect failed: Connection timed out
debug2: channel 3: zombie
debug2: channel 3: garbage collecting
debug1: channel 3: free: direct-tcpip: listening port 5900 for 10.100.0.8 port 5900, connect from 127.0.0.1 port 39009, nchannels 4
明らかに問題はsshではなくVNCサーバーが原因です
この質問を解決済みとしてマークできるように、回答を作成しようとします。
接続を確認するには、次のように1つ以上の-v
オプションを使用してsshを実行します。
ssh -v ...
または
ssh -vvv ...
ログを確認すると、ユーザーがポート5900に(ローカルで)接続できないためです。
ローカルに接続できるかどうかを確認してください。
ssh someotheruser@server
そして、サーバー上のユーザーのシェルを試してみてください
telnet 10.100.0.8 5900
別のsshセッションからtelnetを強制終了する準備をしてください。機能していてもハングする場合があります(機能している場合は、
Trying 10.100.0.8...
Connected to localhost.
Escape character is '^]'.
RFB 003.007
接続しない場合、問題はsshポート転送ではなく、VNCサーバーがユーザーからの接続を受け入れていないことです。