
연결이 끊어진 SSH 세션에 연결할 수 있는 방법이 있나요? 별도로 작업 중인 원격 사이트에 대한 네트워크 연결에 문제가 있습니다. 그러나 그 동안 원격 위치의 서버에 연결되어 있는 동안 패킷 손실로 인해 연결이 끊어지는 경우가 많이 발생합니다. 세션이 한동안 활성 상태로 유지되는 경우가 많으며 때로는 가능하면 다시 시작하지 않고 다시 돌아가야 하는 일부 작업(파일 편집, 일부 프로세스 실행 등)이 진행 중일 때도 있습니다.
답변1
업데이트: 실제 답변은 아래 zero_r의 답변을 참조하세요.
이것은 답변이 아니라 해결 방법입니다. 사용화면.
처음 로그인하면 화면을 실행하세요. 다른 쉘을 얻고 그 안에서 명령을 실행하십시오. 연결이 끊어진 경우 화면 프로세스는 터미널을 활성 상태로 유지하여 셸과 실행 중인 프로세스가 넘어지지 않도록 합니다. 다시 연결되면 'screen -r'을 실행하여 재개하세요.
화면을 구성하고 사용하는 데는 더 많은 방법이 있지만 위의 방법으로 문제를 해결할 수 있습니다.
답변2
ClientAliveInterval(예: 60) 및 TCPKeepAlive(예 또는 아니요)를 서버측 sshd.conf에서 적절한 값으로 설정해 보십시오.
이렇게 하면 몇 분 동안 연결이 끊어지더라도 세션이 활성 상태로 유지됩니다.
답변3
상술 한 바와 같이,GNU 화면가는 길입니다. 이를 통해 여러 '스크린 창'을 통해 여러 명령을 실행할 수 있는 원격 상자에서 '스크린 세션'을 가질 수 있습니다. 이는 상위 SSH 연결이 끊어지면 간단히 분리되어 그 안에서 실행 중인 모든 하위 프로세스를 활성 상태로 유지합니다.
man screen
은 평소와 같이 친구이며 screen
기본적으로 설치되지 않은 경우 OS 패키지를 호출해야 합니다.
기본 사항은 다음과 같습니다.
(원격 호스트에서) 화면 세션을 시작합니다:
$ screen
화면 세션 연결 끊기: CTRL-A,d
다시 로그인한 후 스크린 세션에 다시 연결하십시오.
$ screen -d -r
다른 화면 '창' 열기: CTRL-A,c
열려 있는 화면 창을 순환합니다: CTRL-A,space
있다많이화면으로 할 수 있는 멋진 일들. 10년 넘게 사용해왔는데, 아직도 새로운 기능을 찾아내고 있는 중입니다. 제가 가장 좋아하는 유닉스 유틸리티입니다.
답변4
때로는 화면을 실행하는 것을 잊어버리고 완료하지 못한 작업을 잃어버릴 때도 있습니다. 이 경우 손상된 SSH 세션에 다시 연결할 수는 없지만 실행 중인 프로그램의 부모를 새 터미널로 변경하고 하던 작업을 재개하는 것은 여전히 가능합니다 reptyr
.
실수로 SSH 세션 연결이 끊어진 후 가장 먼저 해야 할 일은 screen
연결이 다시 끊어지지 않도록 실행(또는 원하는 대로 tmux)하는 것입니다. 그런 다음 새 세션에서 실행하여 ps aux | grep {The process to be resumed}
PID를 가져옵니다. PID를 사용하면 (하위 프로세스가 있는 경우) 작업을 계속할 reptyr {PID}
수 있습니다.reptyr -T {PID}
추가 참고사항:
또한 서버측 sshd.conf에서 ClientAliveInterval(예: 60) 및 TCPKeepAlive(예 또는 아니요)를 적절한 값으로 설정하는 것을 고려해 보십시오.zero_r의 답변에서 언급했듯이. 또는 스타링크 폭풍처럼 패킷 손실률이 하늘을 찌르는 네트워크 환경에서 작업해야 하는 경우,MOSH로 전환, SSH 대안이지만 UDP를 기반으로 합니다.