リモートコンピュータにSSHとして接続するたびに、常に新しいリモートシェルが作成されます。
SSHクライアントはリモートシステムで実行されている既存のシェルに接続できますか?
答え1
いいえ、SSHクライアントは既存の実行中のシェルに接続できません。
これセキュアシェル接続プロトコル対話型セッションを次のように指定します。
セッションはプログラムのリモート実行です。計画は次のとおりです。
- 地獄のように、
- 申請書、
- システムコマンド、
- またはいくつかの組み込みサブシステム。
tty がある場合と存在しない場合、X11 転送が含まれる場合も含まれない場合もあります。複数のセッションを同時にアクティブにすることができます。
引き続き次のように明らかにしています。シェルまたはコマンドの開始(私のハイライト):
セッションが構成されると、プログラムが開始されます。スタート最後に。プログラムは、ホストに依存しない名前のシェル、アプリケーション、またはサブシステムです。チャンネルごとに1つのリクエストしか成功できません。
その後、ドキュメントはクライアントが要求を実行する方法を説明します(再び強調します)。
- 「ユーザーのデフォルトシェル(通常はUNIXシステムの/ etc / passwdで定義されています)を要求する」「シェル」スタート反対側から」または
- "exec","サーバーを要求しますスタート与えられたコマンドを実行します。 「または
- 「サブシステム」、「事前定義されたサブシステムの実行」(例:sftp)
したがって、SSH接続は新しいシェルのみを開始できます。
あるコメントが指摘したように、シミュレーションリモート側またはセッションを作成して既存のシェルに接続しscreen
(新しい$ SHELLインスタンスを作成します)、そのリモートシステムに接続してから、新しいシェルまたはコマンドを使用して既存のセッションに接続すること。tmux
ssh
screen
tmux
答え2
はい、しかし数年前は不可能でした。近年、LinuxカーネルにはeBPFという新機能が導入されました。 SSHログ(https://github.com/sshlog/agent)デーモンがプロセス全体を受け取り、他のユーザーのSSHセッションに接続できるようにするために使用されます。
インストール後、まずコマンドを実行して、サーバー上のすべてのアクティブ・セッションをリストします。
mhill@devlaptop:~$ sshlog sessions
User Last Activity Last Command Session Start Client IP TTY
mhill just now /usr/bin/gcc 2023-04-10 16:16:18 127.0.0.1:58668 17
billy 10 min ago /usr/sbin/fdisk 2023-04-10 12:11:05 15.12.5.8:58669 32
そしてそこに以下を追加してください:
mhill@devlaptop:~$ sshlog attach 32
Attached to TTY 32. Press CTRL+Q to exit
billy@devlaptop:~$
これで、このリモートシェルを他のユーザー/セッションと共有しています。自分のセッションと同様にコマンドを実行できます。