SSH 세션이 정지되는 것을 방지하는 방법은 무엇입니까?

SSH 세션이 정지되는 것을 방지하는 방법은 무엇입니까?

SSH 클라이언트/서버 구성 파일에서 ServerAliveInterval몇 대의 컴퓨터를 540으로 설정했습니다 ClientAliveInterval(그보다 높게 설정하는 것은 좋은 생각이 아니라고 생각합니다). 현재 내가 사용하는 많은 SSH 세션이 몇 분 후에 정지됩니다.

어떻게 해결할 수 있나요? 내가 원하는 것은 세션이 전혀 멈추지 않는 것입니다. 예를 들어 8시에 세션을 열고 4시간 동안 사용하지 않으면 12시에 다시 사용할 수 있습니다. 다시 로그인할 필요 없이.

답변1

변경사항은 /etc/ssh/ssh_config정확 /etc/ssh/sshd_config하지만 여전히 효과가 없습니다.

구성이 제대로 작동하도록 하려면 클라이언트에서 다음 구성을 변경하십시오.

/etc/ssh/ssh_config

Host *
ServerAliveInterval 100

서버 활동 간격 클라이언트는 연결을 유지하기 위해 100초마다 빈 패킷을 서버에 보냅니다.

빈 패키지 서버에서 클라이언트로 전송됩니다. 클라이언트는 동일한 패킷을 서버로 보냅니다. TCP NULL 패킷에는 서버가 클라이언트의 응답을 요구하지 않기 때문에 SYN, ACK, FIN 등과 같은 제어 플래그가 포함되어 있지 않습니다. NULL 패킷에 대한 설명은 다음과 같습니다.https://www.rfc-editor.org/rfc/rfc6592

그런 다음 서버에서 sshd 부분을 구성하십시오.

/etc/ssh/sshd_config

ClientAliveInterval 60
TCPKeepAlive yes
ClientAliveCountMax 10000

클라이언트 활동 간격서버는 연결을 유지하기 위해 클라이언트에 빈 패킷을 보내기 전에 60초를 기다립니다.

TCP 연결 유지특정 방화벽이 유휴 연결을 끊지 않도록 하는 것이 가능합니까?

살아있는 최대 클라이언트 수서버는 클라이언트로부터 메시지를 다시 받지 못하는 경우에도 클라이언트에 활동 메시지를 보냅니다.

최종 재시작ssh server

service ssh restart 또는 service sshd restart사용 중인 시스템에 따라 다릅니다.

답변2

개인적인 조언: screen원격 호스트에서 사용하면 터미널에서 활성 상태로 유지되는 한 연결을 유지하려고 시도합니다.

/etc/screenrc스크린 세션을 빠르게 식별하기 위해 일반적으로 추가하는 내용은 다음과 같습니다 .

hardstatus alwayslastline
hardstatus string "%{= kG}[ %{G}%H %{g}][ %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"
defscrollback 8192

편집하다:힌트.

문자열 hardstatus은 다음과 같이 맨 아래 상태 줄을 표시합니다. 세 개의 열린 탭이 있는 화면 세션의 예

롤백 버퍼도 일반적인 1000-1500 라인 대신 8192 라인으로 확장됩니다(배포판에 따라 다름).

답변3

노트북이 잠자기 상태이거나 네트워크 연결이 완벽하지 않은 것이 문제라면 다음을 사용하는 것이 좋습니다.mosh실행되어 ssh자동 재연결이 가능합니다.

~에서웹사이트:

모쉬(휴대폰 케이스)

로밍을 허용하고 간헐적인 연결을 지원하며 지능형 로컬 에코 및 사용자 키 입력 라인 편집을 제공하는 원격 터미널 애플리케이션입니다.

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

Mosh는 GNU/Linux, BSD, macOS, Solaris, Android, Chrome 및 iOS에서 사용할 수 있는 무료 소프트웨어입니다.

tmuxWi-Fi(또는 이전 버전 ) 와 함께 사용하면 Wi-Fi 연결을 변경하고 모바일 데이터가 손실된 후에도 노트북에서 서버에 연결하고 며칠 동안 연결을 유지할 screen수 있습니다 .ssh

답변4

/etc/sshd_config호스트의 sshd 구성을 확인하세요.IdleTimeout환경.

IdleTimeout time
Sets idle timeout limit to time in seconds (s or nothing afternumber), 
in minutes (m), in hours (h), in days (d), or in weeks (w).If the 
connection have been idle (all channels) for that long time thechild 
process is killed with SIGHUP, and connection is closed down.

관련 정보