web-dev-qa-db-ja.com

異なるユーザーでSSHを使用するポート転送:接続の問題をデバッグする方法?

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サーバーが原因です

2
MrD

この質問を解決済みとしてマークできるように、回答を作成しようとします。

接続を確認するには、次のように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サーバーがユーザーからの接続を受け入れていないことです。

1
Rmano