SSH 세션의 최대 기간을 설정하는 방법은 무엇입니까?

SSH 세션의 최대 기간을 설정하는 방법은 무엇입니까?

보안상의 이유로 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)에 다음 매개변수를 추가하면 됩니다.

SSH 연결 후 서버에서 자동으로 스크립트 실행

한 가지 아이디어는 사용자가 작업할 때마다 타이머가 다시 시작되거나, 사용자가 10분마다 또는 세션이 닫히려는 마지막 5분 동안 콘솔 메시지를 받는 것입니다.

동일한 사용자가 여전히 로그인되어 있는 경우 SSH 사용자가 로그인하는 것을 방지하는 방법은 무엇입니까?

SSH에서 다중 연결을 방지하는 방법은 무엇입니까?

SSH 사용자 연결을 끊거나 SSH 로그인 수를 제한하는 방법은 무엇입니까?

관련 정보