유휴 로그인 세션 종료

유휴 로그인 세션 종료

유휴 로그인 세션(콘솔, SSH 등)을 종료하는 효율적인 방법을 찾고 있습니다. 이를 수행하는 방법에 대한 수많은 답변이 인터넷에 있지만 모두 매우 기본적인 사용 사례만 다루고 있습니다.

요구사항은 다음과 같습니다.

  • 이 설정은 모든 로그인 세션에 적용되어야 합니다(로그인 세션은 pam 세션으로 정의됨).
  • 사용자가 재정의할 수 없습니다.
  • 속이는 것은 어렵거나 불가능해야 합니다. 불행히도 이것은 주관적인 요구 사항입니다. 사용자가 키보드에 물 마시는 새를 놓는다면 경계할 가치가 없습니다. 그러나 SSH 클라이언트 구성 또는 셸 구성 파일에서 시간 초과를 효과적으로 제거하는 설정을 설정할 수 있는 경우 이를 방지해야 합니다.
  • 활동은 SSH 스트림(암호화 전)의 모든 IO로 정의됩니다. 최악의 경우에도 TTY/STDIN/STDOUT/STDERR에서 IO로 정의될 수 있습니다. SSH 터널과 같은 것들은 상태를 활성 상태로 유지해야 하기 때문에 전자가 선호됩니다. 그러나 제한 시간(시간 단위)이 충분히 높으면 후자가 허용됩니다.

 

작동하지 않는 해결책:

크론 작업 구문 분석 w/ who출력:

모든 세션이 이 목록에 표시되는 것은 아니기 때문에 이 방법은 작동하지 않습니다. 예를 들어 실행하면 ssh foo.example.com bash세션이 목록에 나타나지 않습니다. 프로세스를 실행 ssh -N foo.example.com하거나 백그라운드로 실행할 수도 있지만 ControlMaster표시되지는 않습니다.

사용 & sshd_config:ClientAliveIntervalClientAliveCountMax

이것은 제가 자주 보는 또 다른 제안이지만 유휴 연결을 끊는 것이 전혀 의도가 아니기 때문에 작동하지 않습니다. 이러한 설정은 유휴 연결이 아닌 끊어진 연결을 감지하고 종료하도록 설계되었습니다. 이러한 설정은 클라이언트 측에서
설정하면 쉽게 무시할 수 있습니다 .ServerAliveInterval

TMOUT변수

이는 쉘이 필요하고 사용자가 쉽게 무시할 수 있으므로 매우 약한 솔루션입니다.

관련 정보