GNOME 터미널의 ssh 연결 시간 초과 및 동결 방지 방법


220

ssh를 통해 특정 서버에 연결할 때 시간 초과 및 터미널 정지 (입력을 허용하지 않고 연결을 끊지 않고 Ctrl-C로 ssh 프로세스 또는 기타를 종료 할 수 없습니다).

이것은 우분투에 있습니다. gnome-terminal 터미널 입출력을 일시 중지하는 것으로 보이지만 그놈 터미널 소프트웨어 자체의 작동에는 영향을 미치지 않습니다. 그래서 덜 버그 gnome-terminal ssh와 성가신 불일치보다.

그래서, 시간 초과 된 ssh 연결을 방지하거나 터미널을 다시 얻는 방법이 있습니까?


답변:


248

sshd (서버)는 잠시 동안 클라이언트로부터 아무 것도 듣지 못하면 연결을 닫습니다. 서버에 잠시 동안 징후 (sign-of-life) 신호를 보내도록 클라이언트에게 지시 할 수 있습니다.

이 구성은 파일에 있습니다. ~/.ssh/config. 원격 호스트에 4 분마다 신호를 보내려면, 다음을 너에게 넣어 라. ~/.ssh/config.

Host remotehost
  HostName remotehost.com
  ServerAliveInterval 240

이것은 내 안에있다. ~/.ssh/config.

모든 호스트에서이 기능을 사용하려면 다음을 사용하십시오.

Host *
  ServerAliveInterval 240

또한 반드시 실행하십시오. chmod 600 ~/.ssh/config왜냐하면 config 파일은 누구도 읽을 수 없기 때문입니다.


1
문구를 도와 주셔서 감사합니다 sblair, 많이 감사합니다. ssh가 파일의 권한을 검사하고 그것이 읽을 수있는 그룹 또는 그룹 일 경우 "필히"로 "should not"로 변경했습니다.
Ludwig Weinzierl

1
이것은 OP가 요청한 것이 아닙니다. 그는 비 활동으로 인해 시작되지 않습니다. 그는 연결을 시도 중이고 터미널은 얼어 있습니다.
Cerin

이게 어디 있니? ~/.ssh/config?
User

1
@ 사용자 '~ /'는 홈 폴더를 나타냅니다. '.ssh'는 홈 폴더 내의 폴더입니다.
wkm

5
연결이 실제로 끊어지는 경우에는 쓸모가 없습니다 ...
so12311

237

프레스 들어가다 , ~ ~ , . 한 세션 씩 다른 세션이 끊어 지도록합니다.

ssh man 페이지의 "ESCAPE CHARACTERS"섹션은 기본 세부 사항을 설명합니다.


38
이 답변은 더 정확하게 질문에 대답하는 것처럼 보입니다. 그리고 어쨌든 내가 찾고있는 대답이었습니다.
CoatedMoose

선의 주석 처리를 제거해야합니다. EscapeChar ~ ...에서 /etc/ssh/ssh_config (또는 ~/.ssh/ssh_config 너가 선호한다면).
Aditya M P

@adityamenon 아니, EscapeChar ~ 이미 기본 제공 기본값입니다.
Peter Eisentraut

2
@ 마크 질문은 묻습니다 "ssh 연결에서 터미널을 회복하지 못하게하는 방법이 있습니까? 시간이 초과 된 ? "강조하는 광산.
CoatedMoose

2
비록 그것이 질문의 맥락에서 틀렸을지라도, 이것은 내가 원했던 바로 그 것이다.
Subin Sebastian

37

tho는 질문에 대한 직접적인 대답이 아니며, 문제와 관련이 있습니다. 연결을 유지하려고 시도하는 대신 (결국 모든 연결이 끊어짐) 터미널 멀티플렉서를 사용할 수 있습니다. screentmux 터미널 연결이 끊어진 경우에도 백그라운드에서 세션을 유지합니다.

본질적으로 즉시 실행하는 SSH 서버에 로그인 할 때 screen 새 세션을 만들고 연결합니다.

$ screen

그런 다음 평상시처럼 쉘을 사용하여 작업하십시오. 이제 연결이 끊어지면 온라인 상태로 돌아와 SSH를 통해 서버에 다시 연결할 수 있습니다. 현재 세션의 목록을 볼 수 있습니다.

$ screen -ls

세션에 다시 연결하려면 :

$ screen -r <session>

어디에 <session> PID 또는 세션 이름입니다. 세션에 다시 연결되며 중단 한 부분부터 계속할 수 있습니다!

세션을 분리하고 집에서 다시 연결하여 중단 한 정확한 지점부터 픽업 할 수도 있습니다. 사용하는 세션을 분리하려면 C-a 뒤이어 C-d (thats Control + A 그리고 Control + D ).

있다 간단한 온라인 튜토리얼 게다가.

사용 screentmux 원격 서버에서 모범 사례 ~이고 추천 . 어떤 사람들은 가지고있는만큼 멀리 간다. screen 기본 로그인 쉘로 사용하므로 연결하면 즉시 새 screen 세션.


1
또 다른 대안은 mosh를 사용하는 것입니다. mosh.mit.edu
Zombies

가끔씩 끊어지는 핫스팟이나 무선 랜을 사용하는 경우 특히 유용합니다.
Randall

11

추가를 시도하십시오. -o ServerAliveInterval=30 연결 문자열에 ( 30 30 초를 의미하며 물론 조정될 수 있음)



1

처음부터 시간 초과하지 못하도록하려는 사람들을 위해.

설정하려고 할 수 있습니다. ConnectTimeout 0 구성 파일에서. 값 0은 닫히지 않는 한 무한대로 연결을 유지한다는 것을 의미합니다.

config (또는 ssh_config) 파일은 다음과 같이 보일 수 있습니다 :

Host *
   ConnectTimeout 0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.