원격 컴퓨터에 SSH로 연결할 때마다 항상 새 원격 셸이 생성됩니다.
SSH 클라이언트가 원격 시스템에서 실행 중인 기존 셸에 연결할 수 있나요?
답변1
아니요, SSH 클라이언트는 기존 실행 중인 셸에 연결할 수 없습니다.
이것보안 셸 연결 프로토콜대화형 세션을 다음과 같이 지정합니다.
세션은 프로그램의 원격 실행입니다. 계획은 다음과 같습니다.
- 지옥처럼,
- 지원서,
- 시스템 명령,
- 또는 일부 내장 하위 시스템.
tty가 있을 수도 있고 없을 수도 있고, X11 전달이 포함될 수도 있고 포함되지 않을 수도 있습니다. 여러 세션이 동시에 활성화될 수 있습니다.
계속해서 다음과 같이 분명히 밝히고 있습니다.쉘 또는 명령 시작(내 강조점):
세션이 구성되면 프로그램이 시작됩니다.시작맨 끝에. 프로그램은 호스트 독립적인 이름을 가진 셸, 응용 프로그램 또는 하위 시스템일 수 있습니다. 채널당 하나의 요청만 성공할 수 있습니다.
그런 다음 문서에서는 클라이언트가 요청을 수행하는 방법을 설명합니다(다시 강조합니다).
- "사용자의 기본 쉘(일반적으로 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:~$
이제 이 원격 쉘을 다른 사용자/세션과 공유하고 있습니다. 자신의 세션에서와 마찬가지로 명령을 실행할 수 있습니다.