내 서버에 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
이런 방식으로 의사 터미널 할당을 강제로 시작하려면 -t
with를 사용해야 합니다 .ssh
screen
원격 호스트의 별칭은 이와 유사할 수 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
.
참고: RemoteCommand
OpenSSH 7.6(2017-10-03)에 추가되었습니다.
을 위한 tmux
:
- 대신
tmux new-session -A -s "%n"
에 in을 사용하세요 .~/.ssh/config
screen -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} ' )