SSH 클라이언트가 원격 시스템에서 실행 중인 기존 셸에 연결할 수 있나요?

SSH 클라이언트가 원격 시스템에서 실행 중인 기존 셸에 연결할 수 있나요?

원격 컴퓨터에 SSH로 연결할 때마다 항상 새 원격 셸이 생성됩니다.

SSH 클라이언트가 원격 시스템에서 실행 중인 기존 셸에 연결할 수 있나요?

답변1

아니요, SSH 클라이언트는 기존 실행 중인 셸에 연결할 수 없습니다.

이것보안 셸 연결 프로토콜대화형 세션을 다음과 같이 지정합니다.

세션은 프로그램의 원격 실행입니다. 계획은 다음과 같습니다.

  • 지옥처럼,
  • 지원서,
  • 시스템 명령,
  • 또는 일부 내장 하위 시스템.

tty가 있을 수도 있고 없을 수도 있고, X11 전달이 포함될 수도 있고 포함되지 않을 수도 있습니다. 여러 세션이 동시에 활성화될 수 있습니다.

계속해서 다음과 같이 분명히 밝히고 있습니다.쉘 또는 명령 시작(내 강조점):

세션이 구성되면 프로그램이 시작됩니다.시작맨 끝에. 프로그램은 호스트 독립적인 이름을 가진 셸, 응용 프로그램 또는 하위 시스템일 수 있습니다. 채널당 하나의 요청만 성공할 수 있습니다.

그런 다음 문서에서는 클라이언트가 요청을 수행하는 방법을 설명합니다(다시 강조합니다).

  • "사용자의 기본 쉘(일반적으로 UNIX 시스템의 /etc/passwd에 정의됨)을 요청하는" "쉘"시작반대편에서" 또는
  • "exec","서버를 요청합니다시작주어진 명령을 실행합니다. ",또는
  • "하위 시스템", "미리 정의된 하위 시스템 실행"(예: sftp)

따라서 SSH 연결은 새 셸만 시작할 수 있습니다.

한 의견이 지적했듯이시뮬레이션원격 측에서 또는 세션을 생성하여 기존 셸에 연결한 다음 screen(새 $SHELL 인스턴스 생성!) 해당 원격 시스템에 연결한 다음 해당 새 셸에서 또는 명령을 사용하여 기존 세션에 연결하는 행위 .tmuxsshscreentmux

답변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:~$ 

이제 이 원격 쉘을 다른 사용자/세션과 공유하고 있습니다. 자신의 세션에서와 마찬가지로 명령을 실행할 수 있습니다.

관련 정보