중첩된 SSH에 있는지 어떻게 알 수 있나요?

중첩된 SSH에 있는지 어떻게 알 수 있나요?

중첩된 SSH 세션에 있는지, 그리고 그 중 몇 개가 있는지 알아낼 수 있는 방법이 있는지 알고 싶습니다.

예를 들어,호스트 2 ssh user1@host1그럼부터호스트 1 ssh user1@host2마침내호스트 1, 하지만 실제로는 종료할 수 있습니다호스트 2.

물론 종료 명령이 아닌 이 상황(중첩 SSH 세션)에 있는지 어떻게 알 수 있나요?

답변1

모든 SSH 클라이언트가 이 기능을 지원하는 것은 아니며 다르게 구성될 수 있으므로 이는 완벽한 솔루션이 아닙니다. 아직…

sshOpenSSH는 다음을 지원합니다:

이스케이프 문자

의사 터미널을 요청할 때 ssh이스케이프 문자를 사용하여 많은 기능이 지원됩니다 .

물결표 문자 하나를 ~~물결표 문자로 보낼 수도 있고, 물결표 문자 뒤에 아래 설명된 문자 이외의 문자를 보낼 수도 있습니다. 특수 문자로 해석되려면 이스케이프 문자가 항상 개행 문자 뒤에 와야 합니다. 이스케이프 문자는 EscapeChar구성 지시문을 사용하여 구성 파일에서 또는 옵션을 통해 명령줄에서 변경할 수 있습니다 -e.

지원되는 이스케이프(기본값 가정 ~)는 다음과 같습니다.

[…]

~^Z
배경 ssh.

[…]

~C
명령줄을 엽니다. [...] 이 옵션이 에서 활성화되면 !command사용자는 로컬 명령을 실행할 수 있습니다. 기본적인 도움말을 보려면 이 옵션을 사용하세요.PermitLocalCommandssh_config(5)-h

[…]

연결된 모든 SSH 클라이언트가 이 기능을 지원하고 의사 터미널이 요청된다고 가정하면 현재 명령줄에 실제 물결표가 표시되기 전에 "사용되는" 물결표 문자 수를 관찰하여 연결 수를 알 수 있습니다. 특수 문자로 해석되려면 물결표 문자가 항상 개행 문자 뒤에 와야 한다는 점을 기억하세요. 내 테스트에 따르면 각 연결은 하나의 이스케이프 문자를 사용합니다.

예를 들어 화면에 표시하기 위해 4번을 Enter보내야 한다면 이는 3개의 링크 연결이 있다는 의미입니다.~~

Enter해당 금액을 보낸 ~다음 + 를 보내면 Ctrl이러한 배경을 지정할 수 있습니다 Z. 그러면 어디서 왔는지( env | grep ^SSH_), 현재 위치( uname -a, hostname, ...) 및 배경 명령이 무엇인지( jobs) 조사할 수 있는 적절한 셸로 이동됩니다 . fg연결을 복원하려면 실행하세요 . 수행할 수 있는 작업은 셸과 그에 따라 실행하는 방법에 따라 다르므로 ssh자세한 내용은 다루지 않겠습니다.

ssh연결에 대한 기본 정보를 인쇄 할 수 있는 탈출 기능 ( ~#예 : 아직 그런 기능은 없는 것 같습니다.

~C( C여기서는 대문자 C, Shift+ C) 를 사용하면 백그라운드로 아무 것도 보내지 않고 조사 !command할 수 있습니다 . ssh기본값을 참고하세요.PermitLocalCommandno. AFAIK 연결이 설정된 후에는 변경할 수 없으므로 미리 생각하십시오.

관련 정보