컴퓨터를 깨우고 일시 중단하여 SSH 연결을 지속적으로 유지합니다.

컴퓨터를 깨우고 일시 중단하여 SSH 연결을 지속적으로 유지합니다.

내 정보는 다음과 같습니다.

  • SOCKS5 프록시로 사용되는 SSH 연결이 있습니다. 컴퓨터를 켤 때마다 다시 초기화해야 하는 것이 짜증스럽습니다.

  • ServerAliveInterval에 설정했습니다 60. ~/.ssh/config추가할 권한이 없으며 ClientAliveInterval추가하더라도 동일한 효과가 있습니다.

  • 내가 받은 특정 오류 메시지는 "깨진 파이프"였습니다. screen아니면 tmux여기서는 도움이 되지 않습니다. 매번 추가해야 하므로 다시 numero uno로 돌아갑니다.

  • autossh작동하지 않는 것 같습니다. 실행해서 autossh -M 0 -DPORT alias작업관리자에서 봤는데 5분을 기다려도 SSH 연결이 다시 시작되지 않는 것 같았습니다.

위의 세 가지 옵션 중 하나를 사용하라는 질문을 많이 읽었지만 그중 어느 것도 깨우거나 일시 중지하는 것과 관련이 없습니다. 나는 이것을 한 번만(컴퓨터에 로그인할 때) 발생하기를 원하기 때문에 일부 bash init 스크립트에 넣을 수 없습니다. 그러나 동시에 컴퓨터를 사용하는 동안 SSH 연결이 끊어지는 경우에도 SSH 연결이 활성 상태로 유지되기를 원합니다. 목표를 달성하기 위해 어떤 효과 조합을 사용합니까?

답변1

연결 지속성

영구 연결에는 서버 측 지원이 필요합니다. 이는 현재 openssh 서버에서는 사용할 수 없습니다(그리고 앞으로도 그럴 것 같지 않습니다).

클라이언트 부분은 몇 년 전에 구현되었으며 유명한UseRoaming이 기능은 몇 주 전에 openssh에서 제거되었습니다. 이 기능은 작동하지 않았으며주요 보안 결함. SSH 서버 에서 작동할 수도 있지만 appgate.com이 취약점에 대해 처음 들어봤습니다.

클라이언트/서버 활동 간격은 일시 중지와 깨우기 사이에 IP 주소를 변경하지 않는 경우 TCP 연결 유지 중에만 유효합니다.

네트워크 시작 후 스크립트

ifup귀하의 경우에는 스크립트(네트워크 인터페이스가 시작된 후 실행되는 스크립트)를 사용하여 솔루션을 고려해 보겠습니다 . /sbin/ifup-localSOCKS5를 시작하면 다음과 같이 보일 수 있습니다 .

#!/bin/sh
if [[ "$1" == "eth0" ]]
then
  ssh -DPORT alias
else
  #DO_NOTHING
fi

스크립트를 실행 가능하게 만드는 것을 잊지 마십시오 sudo chmod +x /sbin/ifup-local. 네트워크 인터페이스나 기타 항목을 구별하여 스크립트에 더 많은 검사와 항목을 추가할 수도 있습니다.원천

답변2

(약간의 주제에서 벗어난 답변이지만 귀하의 경우에는 유용할 수 있습니다)

UDP를 통한 OpenVPN을 통해 ssh를 실행할 수 있습니다(방화벽에서 허용하는 경우). 이 접근 방식은 효과적이지만 다시 연결하는 데 상당한 지연이 발생합니다(1분 정도).

하지만, 사용할 수 있다면 시도해 보세요.모쉬. 처음부터 연결 지속성을 염두에 두고 구축되었습니다.

관련 정보