한동안 유휴 상태 인 경우 SSH 연결이 끊어지는 것을 방지하는 방법


50

30 분 동안 사용자 입력이 없으면 해당 시스템에 의해 연결이 끊어진 시스템에 대한 ssh 연결이 있습니다. 그러나와 같은 것을 시작 top하면 연결이 유지됩니다. 이것은 클라이언트의 머신이므로 해당 머신의 SSH 서버를 재구성 할 수 없습니다. 그래서 나는 자동으로 유휴 상태를 감지하고 같은 것을 시작하는 방법을 찾고 top있습니다. Bash를위한 "스크린 세이버"의 종류.

로 할 수 screen있지만 불행히도 screen설치되지 않았으며 소프트웨어를 설치할 수 없습니다. Bash가 제공하는 것을 사용해야합니다.

명확하게하기 위해 : 로그인 한 번 시작한 솔루션을 찾고 있는데 그 터미널을 사용하고 걸어서 2 시간 후에 돌아 와서 아무 것도 입력하지 않고 떠나기 전에 계속하고 싶습니다. 또한, 나는 물건을 터널링하려고하지 않습니다 (나는 훌륭한 도구 sshuttle을 추천합니다 )

어떤 아이디어?


예를 들어, ssh 클라이언트 또는 서버 연결이 끊어지면 KeepAlive가 켜져 있어도 ssh 세션이 종료되고 화면 셸은 종료되지 않습니다. .
MariusMatutiae

답변:


77

명확하게하기 위해 : 로그인 한 번 시작한 솔루션을 찾고 있는데 그 터미널을 사용하고 걸어서 2 시간 후에 돌아 와서 아무 것도 입력하지 않고 떠나기 전에 계속하고 싶습니다.

문제는 유휴 세션을 삭제하는 무언가 (일반적으로 방화벽 또는로드 밸런서)가 있다는 것입니다. 세션 연결 유지를 구성하면 연결 유지는 네트워크 장치가 세션을 유휴 상태로 간주하지 못하게합니다.

Linux / Unix / Cygwin OpenSSH 수정 :
가장 간단한 수정은 ssh 클라이언트 keepalives를 활성화하는 것입니다. 이 예제는 60 초마다 ssh keepalive를 보냅니다.

ssh -o "ServerAliveInterval 60" <SERVER_ADDRESS>

당신은 모든 세션에서이를 사용하려면, 당신이 넣어 /etc/ssh/ssh_config또는 ~/.ssh/config:

ServerAliveInterval 60

자세한 내용은 맨 페이지를 참조하십시오.ssh_config

퍼티 수정 :

이것을 PuTTY "기본 설정"에 저장하십시오 ...

  • 연결을 클릭하십시오
  • "keepalives 사이의 두 번째"에 60을 입력하십시오.

putty_screenshot


21

Mike Pennigton의 답변 외에도 , 당신도 알고 ServerAliveCountMax싶습니다.

  • ServerAliveIntervalx 초마다 keepalive를 전송합니다 (기본값은 0 이며, 다른 것으로 설정되지 않은 경우이 기능을 비활성화합니다).
  • ServerAliveCountMax응답이 없으면 시간 이 완료됩니다 . 기본값 ServerAliveCountMax3입니다 ( ssh_config 맨 페이지 참조 ).

예 : 설정 한 경우 ServerAliveInterval60 및 휴가 ServerAliveCountMax그대로,이 수단이 킵 얼라이브 만 기다리는 3 * 60 = 180 seconds = 3 quiting하기 전에 분.

연결을 유지하려는 시도로 2 시간으로 늘리려면 다음을 수행하십시오.

명령 당 :

따라서 설정을 고려해야합니다

ssh -o "ServerAliveInterval 60" -o "ServerAliveCountMax 120" <SERVER_ADDRESS>

지속성 있는:

지속적으로 쓰려면 /etc/ssh/ssh_config(시스템 전체에 적용) 또는 ~/.ssh/config(사용자 전용) :

ServerAliveInterval 60
ServerAliveCountMax 120

노트

으로 dislick이 올바르게 지적 이 당신은 상황에 따라하지 않을 수 있습니다 무엇을 :

  • 서버가 더 이상 응답하지 않는 즉시 세션을 빠르게 종료하려면에 대해 낮은 값을 선택해야합니다 ServerAliveCountMax.
  • 이미 설정된 연결을 유지하는 데 더 관심이있는 경우 (예 : 기차로 이동하고 대기 시간이 길어짐) 연결을 다시 설정하려고 시도 ServerAliveCountMax할 수 있도록 더 높은 값을 선택해야합니다 ssh.

또한보십시오:


1
죄송하지만 이건 잘못입니다. ServerAliveCountMax서버 로부터 메시지를 다시받지 않고 보낼 수있는 서버 활성 메시지의 양을 지정 합니다. 당신이 원하는 경우 ssh는 정지 후 (그래서 당신이 그것을 다시 시작할 수) 종료에 실제로 설정해야합니다 ServerAliveCountMaxA와 낮은 번호입니다. 링크 된 맨 페이지 OP를 참조하십시오 .
9

@ dislick 나는 이것에 대해 조금 생각해야했지만 상황에 따라 당신이 옳다고 생각하므로 맥락을 강조하기 위해 메모를 추가했습니다.
Murmel

2

나는 Mobaxterm을 사용하고 있으며이 문제를 만났습니다. Mobaxterm은 또한 클라이언트가 유휴 상태 일 때 클라이언트를 활성 상태로 유지하는 옵션도 제공합니다. 로 이동하십시오 Settings -> Configuration -> SSH. 섹션 SSH settings이 있습니다 SSH keepalive. 옵션을 확인하십시오 . 그런 다음 문제가 사라져야합니다.

여기에 이미지 설명을 입력하십시오


"SSH keepalive"가 무료 버전으로 작동
합니까?

예, 작동합니다. 문제에 다른 원인이있을 수 있습니다.
jdhao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.