screen -D -R ...リモート分離とログアウトが必要な場合 - ここで「リモートログアウト」の目的は何ですか?

screen -D -R ...リモート分離とログアウトが必要な場合 - ここで「リモートログアウト」の目的は何ですか?

現在職場で使用されているユースケースscreenssh、サーバー、su技術ユーザーアカウント、およびscreen -RD。タイムアウトによってセッションが自動的に切断された場合は、sshこの手順を繰り返して、サーバー上の技術アカウントの「ターミナルステータス」が接続リセットが発生していないように見せます。

-RDフラグなどの重要性を知りたいです。スクリーンマニュアルページ私は読みました(強調):

-D -R

すぐに添付してください。詳しくは、セッションが実行されている場合は再接続することを意味します。必要に応じて削除してくださいリモートログアウト最初。実行していない場合は、それを作成してユーザーに通知します。作家が一番好きな作品です。

ウェブ検索を試しましたが、logout remotely screen最も関連性の高い結果はhttps://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/、私は別れについて読んだ。

スクリーンを分解する

リモートセッションからログアウトしたいが、そのコンピュータで作成されたセッションをアクティブにしたい場合は、端末から画面を切り離すだけで制御端末がなくなります。これが完了したら、安全にログアウトできます。

SEで見つけました別の端末からリモートで画面を分離する方法そしてhttps://askubuntu.com/questions/526972/remotely-log-out-of-graphical-gnome-sessionしかし、これは別の具体的な問題です。

ログイン、ログアウトなどに関するウィキペディアを読んでみましたが、まだ明確ではありません。どのセッションからリモートでログアウトできますか?私はサーバー上で実行していますscreen。おそらく、このフラグは私の特定のユースケースに関連していませんか?-RD(リモートログアウト)最も一般的なユースケースは何ですか?

答え1

サーバーで実行すると、screen実際には同時に2つのターミナルセッションがあります。 1つ目はSSH経由で接続するセッション、2つ目はコマンドで管理される「ローカル」セッションですscreen。最初のセッションが何らかの理由で正しく終了せずに終了すると、2つのセッションが自動的に分離され、新しいscreenSSHセッションを確立するときにscreen既存の2番目のセッションに再接続できます。

切断のタイムアウトが非アクティブのために既存の接続を切断するファイアウォールに似ている場合、問題は、ファイアウォールが接続のどちらの端にも切断信号を送信できないことです。問題のある方が何かを送ろうとするまで切断された接続を上書きします。

したがって、ファイアウォールが SSH 接続を切断し、SSH 接続に文字を 1 つでも入力すると、ファイアウォールは TCP リセットを SSH クライアントに送り返し、接続が切断されたことを確認できます。ただし、SSHサーバーが必ずしもこれを認識するわけではありません。サーバーがユーザーに何も送信しようとしない場合は、TCP接続がユーザーの入力を待っている可能性があります。サーバーが知っている限り、この接続はまだ接続されていますがアイドル状態です。

-Dこの特別な場合は、以前のSSHセッションがまだ接続されていると思っていても、そのセッションを削除するオプションが必要です。screen -DRscreenscreen

副作用のため、サーバーはscreen初期の壊れたSSHセッションから出力(「切断」メッセージと新しいシェルプロンプト)を送信しようとし、ファイアウォールはTCPリセットなどを再送信します。sshd最後に、ネットワークレベルで切断された古いSSH接続に関する情報を取得してクリーンアップします。

ただし、SSHセッションタイムアウトの原因がサーバー上の何かによって最初のSSHセッションが終了した場合、たとえば、サーバー管理者はClientAliveCountMax0sshd_configClientAliveInterval0以外の値をハッキングに設定して、非アクティブの場合に効果を得ます。タイムアウトが開始されると、sshd以前のSSHセッションの接続が完全に切断され、screenセッションがすでに切断されているのを待っています。この場合はscreen -R再接続すれば十分ですが...-Dこの場合にはオプションを追加で指定しても悪いことはありません。


しかし、このように乱用して設定することは、ClientAliveIntervalユーザーの非アクティブタイムアウトを設定する非常に信頼できない方法です。ClientAliveCountMaxsshd_configクライアントは、自分が実行しているかどうかを知らずに問題を解決できます。ClientAliveIntervalこれは、実際のユーザーアクティビティではなくSSH接続レベルのアクティビティを監視するためです。

SSHクライアントユーザーがネットワークタイムアウトを経験している場合は、設定ServerAliveInterval~/.ssh/configまたは非OpenSSHクライアントの場合はそれに対応する設定)でそれを設定できます。クライアントのServerAliveInterval設定がファイアウォールの接続非アクティブタイムアウトより短い場合、SSHクライアントは非アクティブ状態で暗号化されたSSH「まだそこにありますか?」パケットが自動的に送信され、sshdサーバーはそれに応答して非アクティブをリセットします。ファイアウォールタイマー。

ただし、クライアントをより短いタイムアウト値に設定すると、ServerAliveIntervalSSH接続が実際に動作している間にサーバーがタイムアウトに達しないため、いわゆる「ユーザー非アクティブタイムアウト」がオフになります。ClientAliveInterval

残念ながら、一部のセキュリティ強化基準にはこれらのユーザーの非アクティブタイムアウトベースのハッキングが含まれているように見えるClientAliveIntervalため、一部のセキュリティ監査人は、意図した目的に実際には適していない場合でもこれを要求することがあります。

関連情報