종료할 때(그리고 SSH를 종료할 때) 분리된 화면에 대한 별칭

종료할 때(그리고 SSH를 종료할 때) 분리된 화면에 대한 별칭

내 서버에 SSH로 접속하면 자동으로 GNU 화면이 시작됩니다. 다 끝나면 분리해야 해요. 그런 다음 종료하여 SSH를 종료하십시오. 이는 어느 시점에 다시 서버에 SSH로 접속할 때 중단했던 부분부터 계속할 수 있음을 의미합니다.

화면 내에서 SSH를 분리하고 제거하기 위해 별칭(예:)을 만들 수 있습니까?

답변1

screen원격 호스트에 로그인할 때 시작됩니다(로컬 시스템에서 실행됨).

ssh -t user@host screen

원격 호스트의 screen 세션에서 분리하고 로그아웃합니다(제어 소켓을 사용하여 영구 연결을 사용하지 않는 한(예: ControlMaster의 설정 사용) SSH 세션이 종료됩니다).ControlPersist~/.ssh/config

screen -d

나중에 로그인하여 다시 연결하세요.

ssh -t user@host screen -r

이런 방식으로 의사 터미널 할당을 강제로 시작하려면 -twith를 사용해야 합니다 .sshscreen

원격 호스트의 별칭은 이와 유사할 수 screen -d있습니다 detach='screen -d'.

localhost에서는 ~/.ssh/config파일에 다음과 같은 섹션이 있을 수 있습니다.

Host *-screen
    RequestTTY force
    RemoteCommand screen -d -R

Host myhost myhost-screen
    HostName myhost.somedomain.example.com
    User myname

그러면 사용할 때마다

ssh myhost-screen

screen지정된 호스트에서 세션이 생성(또는 다시 연결)됩니다.

ssh myhost

사용하지 않습니다 screen.

참고: RemoteCommandOpenSSH 7.6(2017-10-03)에 추가되었습니다.


을 위한 tmux:

  • 대신 tmux new-session -A -s "%n"에 in을 사용하세요 .~/.ssh/configscreen -d -R
  • 분리하려면 prefixd또는 tmux detach-client를 사용하세요 .tmux detach

답변2

화면을 호출하거나 생성하기 위해 화면 명령을 실행하면, 뒤쪽에 SSH 연결을 종료하기 위해 상위 쉘의 aa Kill을 추가했습니다.

상위 프로세스가 bash인 경우 상위 프로세스를 종료하는 예

kill $( ps -ax -o pid,ppid,args | grep "^$$ " |  grep bash | awk '{print $2} ' )

관련 정보