버려진 SSH 세션에 연결하거나 볼 수 있나요?

버려진 SSH 세션에 연결하거나 볼 수 있나요?

ssh회사 네트워크의 모든 호스트에서 액세스 할 수 있는 Redhat의 가상 인스턴스가 실행 중입니다 . 연결이 끊어질 수도 있고 그렇지 않을 수도 있는 일부 스크립트를 실행하는 동안 내 ssh세션이 중단됩니다. 이 who명령은 여전히 ​​로컬에서 연결이 끊어진 연결을 나열합니다. 다시 연결하면 ssh완전히 새로운 세션이 시작됩니다. 원래 세션에 연결할 수 있는 방법이 있나요? 그렇지 않다면 죽일 수는 없을까? 루트 권한과 물리적 액세스 권한이 있습니다. 초기 세션에서는 화면을 사용하지 않았습니다.

답변1

당신은 사용하고 싶어화면원격에서 SSH를 통해 다시 연결하면 해당 화면 인스턴스에 다시 연결됩니다.

하지만 아니요, SSH 세션 자체에 다시 연결할 수 없습니다. 화면(또는 이를 촉진하기 위해 유사한 것)을 사용해야 합니다.

보고 있다이 문제적어도 하나의 다른 옵션이 있으며 해당 옵션(tmux)과 화면 사이에는 약간의 차이점이 있습니다. 이 질문에 대한 답변을 읽은 후... 실제로 이렇게 말하고 싶습니다.멀티플렉서더 나은

kill아 예, 프로세스(forked bash 포함)로 차단할 수 있습니다 skill. 이름으로 사용자를 죽이려고 할 수도 있지만 해당 사용자가 루트인지 의심됩니다... 죽이려고 할 수도 있지만 죽은 것을 죽일 수는 없습니다.

답변이 여러 번 업데이트되었습니다.

답변2

기본적으로 중단된 SSH 세션에는 다시 연결할 수 없습니다. 그러나 SSH 세션 내에서 프로세스를 설정하고 새 SSH 세션을 다시 설정한 후 프로세스에 다시 연결할 수 있습니다.

당신이 원하는 것은 화면을 사용하는 것이고, 더 나아가 byobu라는 사용자 친화적인 화면 래퍼를 사용하는 것입니다.

Screen을 사용하면 동일한 SSH 세션 내에서 여러 가상 터미널 세션을 실행할 수 있습니다. ㅏ지도 시간그리고도움말 페이지사용 가능.

화면Ctrl-A 키 조합 대신 간단한 기능 키를 사용하여 새 화면을 쉽게 열 수 있게 해주는 래퍼입니다. 또한 이름을 지정할 수 있는 열려 있는 모든 가상 터미널이 포함된 상태 줄도 표시됩니다.

또 다른 좋은 기능은 SSH 연결이 끊어졌을 때 모든 화면이 열린 상태로 유지될 수 있다는 것입니다. SSH를 통해 다시 연결하고 byobu를 호출하면 모든 것이 이전과 같습니다.

지난 몇스크린샷화면.

답변3

앞서 언급했듯이 화면이 아마도 최선의 선택일 것입니다. 세션이 삭제되더라도 계속 실행됩니다. 사용 가능한 세션을 보려면 "screen -list"를 입력하고, 원하는 세션을 보려면 "screen -r <session>"을 입력하세요. 작은 팁은 전체 문자열을 복사/붙여넣는 대신 Tab 키를 사용하여 세션 문자열을 완성할 수 있다는 것입니다.

하지만 화면이 불편할 수 있습니다. 내 클라이언트에서는 쉽게 위로 스크롤하여 콘솔에서 기록을 볼 수 없습니다. 예상한 것과는 약간 다르게 동작합니다. 장기 실행 프로세스가 종료되지 않도록 하려면 "nohup"을 사용하십시오. 연결이 끊어졌을 때 프로세스가 종료되는 것을 방지합니다. 그러나 이를 모니터링하려면 프로세스 출력을 파일로 보내야 합니다. 그리고 bash 스크립트가 있다면 nohup 이전에 "bash"를 명시적으로 호출해야 할 것 같습니다. 한 가지 예...

nohup bash ./myscript.sh > output.log 2>&1 &

이는 nohup을 의미합니다. 프로세스가 종료되는 것을 방지하려면 bash를 명시적으로 호출하십시오. 스크립트에 bash 관련 항목이 있는 경우 스크립트는 현재 디렉토리에서 "myscript.sh"라고 불리며, 출력.log는 std로 전송되며 파일 오류는 다음과 같습니다. 백그라운드에서 프로세스를 실행하려면 끝에 "&"로 출력하세요.

관련 정보