2012-11-29 14 views
10

OpenSSHサーバを実行するためにUbuntu Linuxをセットアップしました。私のDSLルーターは、SSH接続を転送するポートです。私が使用するときX接続の転送時にログアウト時にOpenSSHクライアントがハングアップする

ssh -X myhost 

GUIプログラムを開き、GUIアプリケーションを終了して終了すると、SSHログアウトがハングします。 <Ctrl>-cはうまくいくようですが、毎回押す必要があります。 GUIを開かないとログアウトはハングしません。

誰でもこの問題を解決する方法がありますか?

+0

ログイン/ログアウト中に情報を取得するには 'ssh -vX myhost'を実行します。 Hth。 –

+0

'DBus'は起動しますか?それが私にとって問題を引き起こしていました。理由が不明なため、ログアウトしようとしたときに終了しませんでした。 –

答えて

12

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

+1

これは本質的にあなたのリンクで参照されるのと同じメカニズムですが、OPは 'ssh -X'を使用しているのでstdout/stderrではなく転送されたX接続である可能性があります。そのsshトンネルにまだ*の接続*が開いている場合、sshは開いたままです。私は、システムにログインしてGnome/KDEツール/アプリケーションを起動すると、そのアプリケーション自体が実行したときに必ずしも消えないバックエンドデーモン/サービスのいくつかを起動するようになった。 – twalberg

+0

説明とリンクのために。おそらく、この解決方法は聞こえませんでした。なぜなら、迅速な解決策はないからですが、少なくとも私は何が起こっているのかを知っています。 – admiles

+0

@admiles実際、簡単な方法があります。下の私の答えを見てください。 – Sigi

5

私はこれが古い問題だと知っていますが、私は同じ問題を抱えていました。今私は~. "SSH接続を終了する接続(および任意の多重化セッション)"と私のために動作します。エスケープ文字は新しい行に入力する必要があります。私の場合、エスケープ文字は画面に表示されません(私はエスケープ文字をエスケープしてしまいました。つまり、~~)。あなたは~#であなたのSSHセッションから転送された接続を見ることができます。

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

サポートエスケープシーケンス:

  • ~. - 接続を終了(および多重セッション)
  • ~B - リモートシステムにBREAKを送信
  • ~C - コマンドライン
  • ~Rを開きます - リクエストキー(SSHプロトコル2のみ)
  • ~^Z - suspend ssh
  • ~# - リスト転送接続
  • ~& - 背景のssh(接続が終了するのを待っている)
  • ~? - このメッセージ
  • ~~ -

(注それを2回入力してエスケープ文字を送信エスケープは改行の直後にのみ認識されます)。

+0

この機能は、これまで使用していたOpenSSHクライアントのどのバージョンでもデフォルトで有効になっています。 –

+0

私はそれを再構成しました。これは私のデフォルトでもあります。エスケープ文字が表示されないという混乱の中で、私は設定ファイルと関係があると思っていました。設定ファイルは、デフォルトを変更する方法です。応答していただきありがとうございます。 –

+0

これを行う方法についてもっと説明できますか? stdinはリモートシェルにリダイレクトされます。 –

1

SSHを自動的にバックグラウンドに送ることができます

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

これは引き続きパスワードを要求してから、アプリケーションを実行してSSHをすぐにバックグラウンドに配置します。

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

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

は、SSHのマニュアルページはこのことについて言っているものです。

+1

これは問題を解決するものではなく、単にそれを隠すだけです。余分なプロセスとSSH接続は何も役に立たずに(そして秘密にして起動することなく)行われます。 –

+0

'ssh -f host xterm'はXの転送なしで何をしますか?私はこれがSSHマニュアルにあるのに驚いています。そしてダニエルはそうです、これは問題を隠すだけです。 –

関連する問題