이 간단한 질문에 대한 답변을 찾지 못하는 것 같습니다.
CentOS 6.5 (OpenSSH 5.3p1-94.el6)의 기본 설치에서 유휴 시간이 지난 후 사용자의 SSH 세션이 종료됩니까? 유휴 시간 초과를 늘리려면 다음을 설정할 수 있지만 기본적으로 주석 처리됩니다.
$ grep -i alive /etc/ssh/sshd_config
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
또한 현재 sshd
설정 목록을 덤프하는 명령이 있습니까? 에 아무것도 표시되지 않습니다 man sshd
.
답변
주석 처리 된 행은 sshd_config
일반적으로 기본값을 표시합니다. 이것은 귀하의 질문에 모든 줄이있는 경우입니다. sshd_config
맨 페이지 에서이를 확인할 수 있습니다 . 관련 스 니펫은 다음과 같습니다.
TCPKeepAlive
시스템이 다른쪽에 TCP keepalive 메시지를 보내야하는지 여부를 지정합니다. 전송 된 경우 연결이 끊어 지거나 시스템 중 하나의 충돌이 올바르게 감지됩니다. 그러나 이것은 경로가 일시적으로 다운되면 연결이 끊어지고 일부 사람들은 성가신 것을 알게됩니다. 반면, TCP 연결이 전송되지 않으면 세션이 서버에서 무기한 중단되어 “고스트”사용자가 남게되고 서버 리소스가 소비 될 수 있습니다.
기본값은 “yes”(TCP keepalive 메시지를 보내기위한)이며 네트워크가 다운되거나 클라이언트 호스트가 충돌하는지 서버가 알 수 있습니다. 이렇게하면 세션이 무한정 중단되지 않습니다.
TCP keepalive 메시지를 비활성화하려면 값을 “no”로 설정해야합니다.
이 옵션은 이전에이라고했습니다
KeepAlive
.
ClientAliveCountMax
sshd (8) 가 클라이언트로부터 메시지를 다시받지
않고 전송 될 수있는 클라이언트 활성 메시지 수 (아래 참조)를 설정합니다 . 클라이언트 활성 메시지가 전송되는 동안이 임계 값에 도달하면 sshd가 클라이언트 연결을 끊고 세션을 종료합니다. 클라이언트 활성 메시지의 사용은 다음과 매우 다르다는 점에 유의해야합니다.TCPKeepAlive
(이하)(위). 클라이언트 활성 메시지는 암호화 된 채널을 통해 전송되므로 스푸핑 할 수 없습니다. 에 의해 활성화 된 TCP keepalive 옵션TCPKeepAlive
은 스푸핑 가능합니다. 클라이언트 작동 메커니즘은 클라이언트 또는 서버가 연결이 비활성화 된시기를 아는 것에 의존 할 때 유용합니다.기본값은 3입니다
ClientAliveInterval
(아래 참조)가 15로 설정되어ClientAliveCountMax
있고 기본값을 그대로두면 약 45 초 후에 응답하지 않는 SSH 클라이언트의 연결이 끊어집니다. 이 옵션은 프로토콜 버전 2에만 적용됩니다.
ClientAliveInterval
클라이언트로부터 데이터가 수신되지 않은 경우 sshd (8) 는 클라이언트로부터 응답을 요청하기 위해 암호화 된 채널을 통해 메시지를 보내는 시간 초과 간격을 초 단위로 설정합니다 . 기본값은 0이며, 이러한 메시지가 클라이언트로 전송되지 않음을 나타냅니다. 이 옵션은 프로토콜 버전 2에만 적용됩니다.
답변
클라이언트 또는 서버 측에 SSH keepalive를 설정할 수 있습니다.
고객 입장에서
파일: /etc/ssh/ssh_config
함유량:
Host *
ServerAliveInterval XX
ServerAliveCountMax YY
서버 측
파일: /etc/ssh/sshd_config
함유량:
ClientAliveInterval XX
ClientAliveCountMax YY
http://www.sysadmit.com/2016/02/linux-y-vmware-ssh-evitar-desconexion.html 에서 추출
답변
OpenSSH는 한동안 유휴 상태 인 쉘 세션을 종료하지 않습니다. 이것은 OpenSSH가하는 것이 아닙니다. 유휴 쉘 세션 종료는 OpenSSH 구성과 관련이 없습니다.
표시하는 설정은 연결이 끊어 질 때의 시간 종료와 관련이 있으며 원격 호스트의 쉘 및 사용자가 수행중인 작업과 관련이 없습니다.
유휴 시간이 지나면 원격 호스트의 셸이 종료되거나 다른 프로세스에 의해 종료 될 수 있지만 이는 서버 및 SSH 클라이언트의 SSH 서비스 구성과 관련이 없습니다.
관련 :
- 일정 시간이 지난 후 대화식 ssh 세션을 종료하는 방법 (
TMOUT
유휴bash
쉘 종료를 담당 할 수 있는 쉘 변수 언급 )
sshd
구성 을 덤프하려면 “확장 테스트 모드”를 루트로 사용하십시오.
sshd -T
이것은에 설명되어 있습니다 매뉴얼 (보고 여기 오픈 BSD에) :sshd(8)
OpenSSH_7.7, LibreSSL 2.7.2
-T
확장 테스트 모드. 구성 파일의 유효성을 확인하고 유효 구성을 stdout으로 출력 한 다음 종료하십시오 . 선택적으로 일치 규칙은 하나 이상의
-C
옵션을 사용하여 연결 매개 변수를 지정하여 적용될 수 있습니다.
이 옵션은 sshd
2008 년 OpenSSH 5.1 / 5.1p1에 추가되었습니다 .
답변
일정 기간 동안 작업이 없으면 SSH 연결을 닫아야하는 경우 셸 자체에서 시간 초과 변수를 제공합니다.
bash의 경우 :
TMOUT : 0보다 큰 값으로 설정하면 TMOUT은 읽기 내장의 기본 시간 초과로 처리됩니다. 입력이 터미널에서 올 때 TMOUT 초 후에 입력이 도착하지 않으면 select 명령이 종료됩니다. 대화식 쉘에서 값은 기본 프롬프트를 발행 한 후 입력을 기다리는 시간 (초)으로 해석됩니다. 입력이 도착하지 않으면 해당 시간 (초) 동안 기다린 후 배쉬가 종료됩니다.
실행 TMOUT=10
하여 이를 테스트 하고 연결을 닫을 때까지 10 초 동안 기다리십시오.
tcsh의 경우 :
지정된 시간 (분) 동안 활동이 없으면 쉘에서 로그 아웃하거나 잠금하도록 autologout 쉘 변수를 설정할 수 있습니다.
tcsh에서 시간 초과를 10 분으로 설정하는 구문 은 set autologout=10
입니다. 원래 csh에서는 작동하지 않습니다.
답변
모든 사람이 제한 시간을 10 초로 설정하려면 서버 구성 (sshd_config)에 대해 다음을 수행하십시오.
ClientAliveInterval 10
ClientAliveCountMax 0
로컬 클라이언트의 제한 시간을 10 초로 설정하려면 클라이언트 구성 (ssh_config)에 대해 다음을 수행하십시오.
ServerAliveInterval 10
ServerAliveCountMax 0
AliveCountMax 매개 변수가 0이 아닌 경우 연결 문제가없는 한 서버가 타이머 재설정에 응답하므로 작동하지 않을 수 있습니다. 디버깅이 켜진 상태에서 ssh 클라이언트를 실행하여이를 확인할 수 있습니다.