ClientAliveInterval이 설정된 동안 어떻게 로그인 상태를 유지합니까?

ClientAliveInterval이 설정된 동안 어떻게 로그인 상태를 유지합니까?

규정 준수를 위해 모든 Debian 서버는 다음 구성을 사용하여 15분 후에 시간 초과되도록 설정되어 있습니다./etc/ssh/sshd_config

ClientAliveInterval 900
ClientAliveCountMax 0

물론 이로 인해 유휴 시간이 잠재적으로 연결 해제될 수 있으므로 이러한 서버에서의 작업은 짜증나고 위험해집니다.

기존 구성을 수정하지 않고 클라이언트 세션을 활성 상태로 유지하는 간단한 명령을 찾고 있습니다.

답변1

당신이 팔로우하고 있다면보안기술 구현지침현재 상태

ClientAliveInterval                        600
ClientAliveCountMax                        0

그러면 연결이 끊어지고게으른10분 후 ssh 세션(예: 퍼티 창).

RHEL 7에서 rhel-server-7.9-x86_64-dvd.iso 또는 centos의 새로 설치에서 해당 두 항목의 기본값은 0각각 3ssh 세션이 자동 종료되지 않는 결과를 가져옵니다.

자세한 내용은 다음을 참조하세요.https://stackoverflow.com/questions/71174746/clientaliveinterval-is-not-closing-the-idle-connection

가장 관련성이 높은 것:이는 사용자가 유휴 상태인 상황을 위한 것이 아니며, 맨 페이지에서 발췌한 내용처럼 응답하지 않는 SSH 클라이언트를 위한 것입니다. 클라이언트 프로그램이 정지되거나 연결이 끊어지면 클라이언트가 응답하지 않습니다. 단순히 인간 사용자가 키보드에서 물러났다고 해서 클라이언트가 응답하지 않아야 합니다. SSH 클라이언트는 여전히 서버에서 전송된 패킷을 수신합니다.

클라이언트에 있습니다,putty.exe에서, 아래에연결그리고연결 제어 옵션있다Keepalive 사이의 초(0은 끄기). 기본적으로 0입니다. ClientAliveInterval에서 설정한 것보다 작은 숫자로 설정하세요 sshd_config.

Windows에서 putty.exe를 사용하지 않고 다른 Linux 상자에서 ssh를 사용하는 경우 클라이언트 ssh는 다음을 통해 구성되지만 /etc/ssh/ssh_config거기에는 자주 연결 유지 패킷을 보내는 것으로 알고 있는 해당 항목이 없습니다.

참고: Windows에서 기본 keepalive가 0이고 ClientAliveInterval이 설정된 SSH 서버에서 putty.exe를 사용하면 vi열려 있어도 연결이 끊어져잃어버린vi.swp 파일을 통해 복구할 파일입니다 . 또는 프로그램을 계속해서 실행하는 경우, 즉 서버 측에서 출력이 나오고 ssh 연결이 종료되어 작업이 종료됩니다... 클라이언트 측에서 계산하고 원인이 되는 무언가(키 누름)가 있어야 합니다.살아 유지. 따라서 Windows의 putty.exe를 사용하면 상당히 쉽게 해결할 수 있습니다. Linux에서 Linux로의 ssh에서는 SSH 세션의 클라이언트 측에서 키보드 키를 누르지 않고 연결이 끊어지는 것을 방지하는 방법을 모르겠습니다.

ssh -o업데이트: Linux에서 Linux까지 다양한 옵션을 사용해야 할 것 같습니다 . 자세한 내용은 다음을 참조하세요.SSH에서 tcp-keepalive는 어떻게 작동하나요?

예를 들어: ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=1

/etc/yum.conf가 gpgcheck=1이고 그냥 하는 것과 비슷합니다.냠 설치 --nogpgcheck :)

답변2

내 생각엔 당신이 설정을 통해 구성을 비활성화한 것 같습니다.클라이언트AliveCountMax에게0. 따라서 1로 설정하면 작업이 수행됩니다.

클라이언트AliveCountMax

sshd(8)가 클라이언트로부터 메시지를 다시 받지 않고 보낼 수 있는 클라이언트 활성 메시지 수를 설정합니다. 클라이언트 활성 메시지가 전송되는 동안 이 임계값에 도달하면 sshd는 클라이언트 연결을 끊고 세션을 종료합니다. 클라이언트 활성 메시지의 사용은 TCPKeepAlive와 매우 다르다는 점에 유의하는 것이 중요합니다. 클라이언트 활성 메시지는 암호화된 채널을 통해 전송되므로 스푸핑이 불가능합니다. TCPKeepAlive에 의해 활성화된 TCP keepalive 옵션은 스푸핑 가능합니다. 클라이언트 활성 메커니즘은 클라이언트나 서버가 연결이 비활성화되는 시점을 알아야 하는 경우에 유용합니다.

그만큼기본값은 3입니다.. 만약에ClientAliveInterval이 15로 설정되었습니다., ClientAliveCountMax는 기본값으로 유지되며, 응답하지 않는 SSH 클라이언트는 약 후에 연결이 끊어집니다.45초.

하지만 @TienPhan의 의견에 동의한다는 점을 인정해야 합니다. 서버에서 구성을 유지하는 것이 좋습니다. 여전히 사용 사례에 따라 다릅니다. 모든 사용자를 동일한 방식으로 처리해야 하는 경우 서버측 구성이 선택 사항입니다.

답변3

실제로 서버 측에서는 간격 시간을 설정할 필요가 없습니다. 더 많은 것들이 당신을 행복하게 만들지 않을 것입니다.

"ServerAliveInterval"을 사용하여 아래와 같이 ~/.ssh/config 파일에 추가할 수 있습니다.

host *
        ServerAliveInterval 120

참고: 120은 초이므로 원하는 대로 변경할 수 있습니다.

그러면 이 파일의 모든 서버에 영향을 미칩니다. 또는 개별 서버에 대해 설정할 수도 있습니다.

관련 정보