19

OpenSSHサーバーを実行するようにUbuntuLinuxをセットアップしました。私のDSLルーターはSSH接続をポートフォワーディングしています。使うとき

ssh -X myhost

次に、いくつかのGUIプログラムを開き、GUIアプリケーションを閉じて終了すると、SSHログアウトがハングします。<Ctrl>-c動作しているように見えますが、毎回それを押さなければならないのは面倒です。GUIを開かないと、ログアウトはハングしません。

誰かがこの問題を解決する方法を知っていますか?

4

4 に答える 4

18

これは、開始するプロセスがストリーム(stdout / stderr)を開き、閉じないためです。より詳細な説明と可能な解決策については、こちらをご覧ください。

于 2012-11-29T21:07:20.797 に答える
13

私はこれが古い質問であることを知っていますが、私は同じ問題を抱えていて、いくつかの掘り下げを行った後、私は有用な解決策を見つけました。~.ここで、 「接続の終了(および多重化されたセッション)」を使用してSSH接続を閉じます。これでうまくいきます。エスケープ文字は改行で入力する必要があり、私の場合、エスケープ文字は画面に表示されません(つまり、エスケープ文字をエスケープすることになりました~~)。参考までに、SSHセッションから転送された接続をで表示できます~#

エスケープシーケンスの完全なリストについては~?、SSHセッションに入力してください。

サポートされているエスケープシーケンス:

  • ~. -接続(および多重化されたセッション)を終了します
  • ~B -リモートシステムにBREAKを送信します
  • ~C -コマンドラインを開きます
  • ~R -キーの再生成を要求します(SSHプロトコル2のみ)
  • ~^Z-sshを一時停止します
  • ~# -転送された接続を一覧表示します
  • ~& -バックグラウンドssh(接続が終了するのを待機している場合)
  • ~? - このメッセージ
  • ~~ -エスケープ文字を2回入力して送信します

(エスケープは改行の直後にのみ認識されることに注意してください。)

于 2014-04-30T20:40:23.070 に答える
1

リモートGUIアプリケーションを起動した後、SSHをバックグラウンドに自動的に送信できます。

ssh -X -f remote.host.name 'name_of_gui_application'

これでもパスワードの入力を求められ、アプリケーションを実行して、SSHをすぐにバックグラウンドに置きます。

また/dev/null、からSTDINをリダイレクトするため、アプリケーションを閉じた後、セッションが「ハング」することはありません(とにかくバックグラウンドで実行されているため、わかりません)。

SSHのマニュアルページはこれについて次のように述べています。

リモートサイトでX11プログラムを起動するための推奨される方法は、のようなものを使用することですssh -f host xterm

于 2014-05-01T17:09:34.577 に答える
0

私はこれがOPに直接答えることは決してないことを知っています。しかし、別の解決策を探している場合は、試してみてくださいexit詳細はこちらをご覧ください!

于 2021-03-22T13:49:48.733 に答える