SSH 연결을 통한 ServerAliveInterval의 동작

SSH 연결을 통한 ServerAliveInterval의 동작

SSH를 사용하여 다른 시스템에 로그인하고 새 시스템을 생성하고 일부 설정을 수행하는 스크립트를 실행하고 있습니다. 약 7~8시간 정도 소요됩니다. 따라서 SSH 연결이 계속 끊어지고 스크립트 실행 실패로 인해 항상 시간 초과가 발생합니다.

이제 SSH 연결과 함께 이 인수를 사용하고 있습니다.

ssh -o ServerAliveInterval=60 user@host ....

이 SSH는 여러 번 생성됩니다. 문제는 몇 번의 SSH 연결 후에 오류가 발생한다는 것입니다.

too many logins of user로그인 성공 직후 SSH 연결이 닫힙니다.

그럼 그 사람의 행동은?ServerAliveInterval, ssh 작업이 끝난 후에도 원격 시스템의 ssh 사용자 로그인 세션을 계속 유지하므로 추가 로그인 연결이 끊어지는 이유는 무엇입니까?

답변1

클라이언트의 연결이 끊어진 경우 세션이 계속 유지되지 않는다고 생각합니다. 아마도 해당 옵션은 서버 측일 것입니다.

클라이언트AliveCountMax

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

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

클라이언트살아있는간격

클라이언트로부터 데이터가 수신되지 않은 경우 sshd(8)는 암호화된 채널을 통해 메시지를 보내 클라이언트에 응답을 요청하는 시간 초과 간격을 초 단위로 설정합니다. 기본값은 0이며, 이는 이러한 메시지가 클라이언트에 전송되지 않음을 나타냅니다.

(남자 sshd_config)

아마도 문제에 대한 실제 해결책은 screen이나 tmux와 같은 터미널 멀티플렉서를 사용하는 데 있을 것입니다. 연결이 끊어지더라도 로그인과 실행 중인 프로그램이 지속되도록 해줍니다. 실행 중인 프로그램 출력을 포함하여 나중에 언제든지 터미널에 다시 연결할 수 있습니다. 또한 이를 사용하여 단일 SSH 연결에 둘 이상의 터미널을 가질 수도 있습니다. 서버가 SSH 세션을 제한하는 것 같으므로 이 방법도 유용할 수 있습니다. 당신은 하나를 찾을 수 있습니다여기 화면 소개, 하지만 그 밖에도 수많은 것들이 있습니다.

답변2

ServerAliveIntervalssh 작업이 끝난 후에도 원격 시스템의 ssh 사용자 로그인 세션을 유지하고 이것이 추가 로그인 연결이 끊어지는 이유입니다 .

아니요. 이는 연결을 확인하고 SSH 또는 하위 수준에서 자동 연결 해제를 방지하는 연결 유지 메시지를 보내는 것입니다. 장기 실행 스크립트를 시작하려면 원격 측에서 또는 를 nohup사용해야 합니다. 연결을 끊은 후에도 스크립트가 계속 실행되며 두 번째 두 개를 사용하면 기존 터미널을 다시 연결할 수 있습니다.screentmux

답변3

ServerAliveInterval=60연결이 계속 유지되기 때문에 활성화한 후에 이러한 오류가 발생할 수 있습니다 . 해당 서버에 대한 SSH 연결/명령 패턴은 서버가 허용하도록 구성된 것보다 더 많은 동시 연결을 축적하고 있습니다.

귀하의 연결이 끊어져서 동시 연결 수가 줄어들었고 서버는 이에 만족했지만(거부된 연결 없음) 귀하는 만족하지 않았습니다.

최대 동시 연결 수와 관련하여 해당 서버의 구성을 알아보고 해당 한도 내에서 유지하거나 서버 관리자와 협상하여 귀하(또는 모든 사람)의 한도를 높이십시오.

관련 정보