보안상의 이유로 SSH 세션이 항상 활성 상태(유휴 상태 아님)인 경우에도 최대 지속 시간을 2시간으로 제한해야 합니다.
sshd_config를 사용하면 세션 유휴 시간 ClientAliveInterval
및 속성을 설정할 수 있다는 것을 알 수 있습니다 . ClientAliveCountMax
이것은 내 관심이 아닙니다.
세션의 최대 활성 시간을 제어하기 위해 구성할 수 있는 다른 설정이 있습니까? SSH 데몬은 centos와 유사하게 Amazon Linux 2에서 실행됩니다.
답변1
sshd_config
특정 기간이 지나면 활성 세션을 종료할 수 있는 옵션이 없습니다 . 이를 수행하는 일반적인 방법은 서버에서 작업을 실행하고 ssh 세션이 너무 오래 지속되는 것을 찾아 프로세스를 종료하는 것입니다.
개발자가 데이터베이스 스키마 변경(종종 "마이그레이션"이라고 함) 수행과 같은 중요한 명령을 실행하기 위해 서버에 로그인할 때 이는 비생산적일 수 있습니다. 이 명령은 실행하는 데 시간이 오래 걸리고 중간에 중단되어서는 안 됩니다. CI/CD 시스템은 일반적으로 애플리케이션 배포 프로세스의 일부로 데이터베이스 마이그레이션 명령을 실행하므로 이는 임시 명령을 실행하는 대화형 사용자에게만 발생하는 것이 아닙니다.
따라서 작업(직접 작성하는 경우)에는 세션을 종료하지 않는 로그인 허용 목록을 포함해야 할 수도 있습니다. 또는 2시간 기본값과 다른(더 긴) 최대 허용 시간을 가진 로그인 목록입니다.
답변2
글쎄요, SSH를 통해 이 작업을 수행하는 것은 매우 어려울 것입니다. 가장 쉬운 방법은 SSH를 통해 특정 계정에 로그인할 때마다 데몬을 시작하는 것입니다. 이렇게 하면 10분 후에 모든 SSH 연결이 끊어집니다. 솔직히 쉽습니다. ~/.profile 또는 ~/.bashrc에 이와 같은 내용을 추가할 수 있습니다.
sleep 600
killall --user {whateverhis/herusernameis}
end
sshd_config에서 ForceCommand를 사용하세요. 반드시 로그인 후 실행해주세요.
특정 Linux 사용자에 대해 활성 SSH 연결에 대한 시간 제한을 설정할 수 있습니까?
Match User ctfuser
ForceCommand "(sleep 600; killall -u ctfuser)& bash"
아니면 ForceCommand
맞춤설정을 시작하세요.script
구성 파일(/etc/ssh/sshd_config)에 다음 매개변수를 추가하면 됩니다.
한 가지 아이디어는 사용자가 작업할 때마다 타이머가 다시 시작되거나, 사용자가 10분마다 또는 세션이 닫히려는 마지막 5분 동안 콘솔 메시지를 받는 것입니다.