연결이 끊긴 SSH 세션에 다시 연결하는 방법 별도로 작업중인 원격 사이트에

연결이 끊긴 ssh 세션에 연결하는 방법이 있습니까? 별도로 작업중인 원격 사이트에 대한 네트워크 연결에 문제가 있습니다. 그러나 그 동안 원격 위치의 서버에 연결되어있는 동안 패킷 손실로 인해 많은 수의 연결이 끊어졌습니다. 여러 번 세션이 활성 상태로 유지되는 경우가 종종 있으며 가능한 경우 다시 시작하지 않고 다시 시작해야하는 작업 (파일 편집, 일부 프로세스 실행 등)의 중간에있을 수 있습니다.



답변

업데이트 : 실제 답변은 아래 zero_r의 답변을 참조하십시오

이것은 대답이 아니라 해결 방법입니다. 화면을 사용하십시오 .

처음 로그인하면 화면을 실행하십시오. 다른 쉘을 얻고 그 안에 명령을 실행하십시오. 연결이 끊어지면 화면 프로세스는 터미널을 활성 상태로 유지하여 쉘과 실행중인 프로세스가 넘어지지 않도록합니다. 다시 연결하면 ‘screen -r’을 실행하여 다시 시작하십시오.

화면을 구성하고 사용하는 데 더 많은 것이 있지만 위의 문제를 해결해야합니다.


답변

서버 측 sshd.conf에서 ClientAliveInterval (예 : 60) 및 TCPKeepAlive (예 또는 아니요)를 적절한 값으로 설정하십시오.

이렇게하면 몇 분 동안 연결이 끊어 지더라도 세션이 활성 상태로 유지됩니다.


답변

위에서 언급했듯이, GNU Screen 은 갈 길입니다. 원격 상자에 여러 개의 ‘스크린 창’을 통해 여러 명령을 실행할 수있는 ‘스크린 세션’을 가질 수 있습니다. 부모 SSH 연결이 끊어지면 분리되어 모든 하위 프로세스가 계속 실행되도록 유지합니다.

man screen‘는 평소와 같이 친구이며 OS 패키지는 screen기본적으로 설치되지 않은 경우 ‘ ‘ 라고 합니다.

기본 사항은 다음과 같습니다.

  • 원격 호스트에서 화면 세션을 시작하십시오.

    $ screen
    
  • 화면 세션에서 연결을 끊습니다. CTRL-A,d

  • 다시 로그인 한 후 화면 세션에 다시 연결하십시오.

    $ screen -d -r
    
  • 다른 화면 ‘창’을여십시오 : CTRL-A,c

  • 다음 CTRL-A과 같은 화면 창을 순환합니다 : ,space

많은 당신이 화면과 함께 할 수있는 멋진 물건은. 나는 그것을 10 년 이상 사용해 왔으며 여전히 새로운 기능을 찾고 있습니다. 내가 가장 좋아하는 유닉스 유틸리티입니다.


답변

나는 아무도 MOSH 를 언급하지 않았다는 것을 믿을 수 없다 .

Mosh는 SSH 로그인 프로세스에 연결할 수있는 별도의 프로토콜로, 연결 끊기, IP 변경, 높은 대기 시간 등으로 며칠 후에도 세션을 유지합니다. 그것은 설명 할 수있는 것보다 홈페이지에 더 잘 설명되어 있으므로 아래 설명을 복사했습니다. 내 경험과 조언은 안드로이드 모바일에서 사용한다는 것입니다. 여행 및 SSH를 할 때 생명을 구하는 것입니다. 예를 들어 기차에서 모바일과 테 더링 할 때 내 노트북에서도 마찬가지입니다. 소스에서 컴파일하여 최신 버전을 얻는 것이 좋습니다. 우분투 내부의 repo 버전은 최신 버전 (작성 당시)에서 수정 된 몇 가지 성가심을 가지고 있습니다.

모쉬 (모바일 쉘)

로밍을 허용하고 간헐적 인 연결을 지원하며 사용자 키 입력의 지능적인 로컬 에코 및 라인 편집 기능을 제공하는 원격 터미널 응용 프로그램입니다.

Mosh는 SSH를 대체합니다. 특히 Wi-Fi, 셀룰러 및 장거리 링크를 통해 더욱 강력하고 반응이 좋습니다.

Mosh는 무료 소프트웨어이며 GNU / Linux, FreeBSD, Solaris, Mac OS X 및 Android에서 사용할 수 있습니다.

웹 사이트의 기능 :

  • IP를 변경하십시오. 연결 상태 유지 : 인터넷 연결간에 이동할 때 Mosh가 자동으로 로밍됩니다. 기차에서 Wi-Fi, 호텔에서 이더넷 및 해변에서 LTE를 사용하십시오. 로그인 상태를 유지합니다. 로밍 후 SSH와 Gmail과 같은 웹 앱을 포함한 대부분의 네트워크 프로그램은 연결이 끊어집니다. 모 쉬는 다릅니다.

  • 달콤한 꿈을 꾸십시오 : Mosh를 사용하면 랩톱을 잠자기 상태로 설정하고 나중에 깨울 수 있습니다. 인터넷 연결이 끊어지면 Mosh에서 경고하지만 네트워크 서비스가 다시 연결되면 연결이 다시 시작됩니다.

  • 네트워크 지연 제거 : SSH는 사용자에게 직접 입력하기 전에 서버의 응답을 기다립니다. 그것은 사용자 인터페이스를 크게 만들 수 있습니다. Mosh는 다릅니다. 입력, 삭제 및 줄 편집에 즉각적인 응답을 제공합니다. 이 기능은 적응 적으로 수행되며 emacs 및 vim과 같은 전체 화면 프로그램에서도 작동합니다. 연결이 잘못되면 뛰어난 예측에 밑줄이 표시되므로 오해되지 않습니다.

  • 권한있는 코드가 없습니다. 데몬 없음 : Mosh를 설치하거나 실행하기 위해 수퍼 유저 일 필요는 없습니다. 클라이언트와 서버는 일반 사용자가 실행하는 실행 파일이며 연결 수명 동안 만 지속됩니다.

  • 동일한 로그인 방법 : Mosh는 네트워크 포트에서 수신 대기하거나 사용자를 인증하지 않습니다. mosh 클라이언트는 SSH를 통해 서버에 로그인하고 사용자는 이전과 동일한 자격 증명 (예 : 비밀번호, 공개 키)을 제공합니다. 그런 다음 Mosh는 mosh 서버를 원격으로 실행하고 UDP를 통해 연결합니다.

  • 터미널 내부에서 실행되지만 더 좋습니다 . Mosh는 ssh와 같은 명령 줄 프로그램입니다. xterm, gnome-terminal, urxvt, Terminal.app, iTerm, emacs, screen 또는 tmux 내에서 사용할 수 있습니다. 그러나 mosh는 처음부터 설계되었으며 UTF-8이라는 하나의 문자 세트 만 지원합니다. 다른 터미널과 SSH의 유니 코드 버그를 수정합니다.

  • Control-C는 훌륭하게 작동합니다 . SSH와 달리 mosh의 UDP 기반 프로토콜은 패킷 손실을 정상적으로 처리하고 네트워크 조건에 따라 프레임 속도를 설정합니다. Mosh는 네트워크 버퍼를 채우지 않으므로 Control-C는
    항상 런 어웨이 프로세스를 중지합니다.


답변

autossh 는 연결을 감시하고 연결이 끊어지면 다시 연결됩니다. Keepalives보다 더 안정적입니다. 스크린 세션에 연결하면 연결을 끊은 곳부터 계속 진행됩니다 ( rscreenautossh와 함께 제공됨 참조 )


답변

tmux

이것은 고전입니다. 터미널 연결이 끊길 위험이있을 때마다 사용하십시오.

$ tmux
$ sh do_something_that_takes_forever

!! Connection fails so you reconnect once you notice

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0

그런 식으로, 당신은 다시 작동합니다.


답변

문제를 해결하기 위해 화면을 설치하고 시작합니다. 스크린을 사용하면 이전 스크린 세션에 다시 연결할 수 있습니다.

그 외에도 screen은 화면 분할, 콘솔보기 등의 멋진 작업을 수행 할 수 있습니다 . 여기여기에서 자세한 정보를 찾을 수 있습니다 .

우선, 연결이 끊어지면

screen -ls

세션을보고

screen -r ${session}

연결이 끊긴 것에 다시 연결합니다.