728x90

리눅스에서 세션 타임아웃(Session Timeout) 설정은 보안이나 자원 관리를 위해 일정 시간 동안 사용자의 활동이 없으면 자동으로 세션(특히 쉘 세션)을 종료시키는 기능입니다.

 

이를 설정하는 방법은 사용하는 쉘 종류(ex. bash, Zsh ..)에 다라 다르지만, 본 글에서는 일반적으로 많이 사용하는 Bash 쉘 기준으로 설명합니다.

 

Bash에서 세션 타임아웃 설정

1. TMOUT 환경 변수 사용

Bash에서는 TMOUT 이라는 환경 변수를 사용하여 타임아웃을 설정할 수 있습니다.

export TMOUT=600

 

위 설정은 사용자가 600초 동안 아무 입력이 없으면 세션을 종료합니다.

~/.bashrc 또는 /etc/profile 파일에 추가하면 사용자 또는 시스템 전체에 적용할 수 있습니다.

 

예시 : 사용자 기준 설정

echo "export TMOUT=600" >> ~/.bashrc
source ~/.bashrc

 

예시 : 시스템 전체 설정

echo "export TMOUT=600" >> /etc/profile

 

보안 강화 : 자동 로그아웃 강제

사용자가 TMOUT을 수정하지 못하도록 하려면 readonly로 설정할 수 있다.

readonly TMOUT=600
export TMOUT

 

 

Zsh에서 세션 타임아웃 설정

Zsh에서는 다음과 같은 설정을 사용합니다.

export TMOUT=600
autoload -Uz add-zsh-hook
add-zsh-hook -Uz idle-exit

idle-exit() {
	exit
   }

 

또는 .zshrc에 아래 한 줄만 써도 기본 동작합니다.

export TMOUT=600

 

기타 고려사항

  • sudo 명령이나 루트 계정에는 별도로 설정해야 합니다.( /root/.bashrc 등)
  • screen이나 tmux 세션의 경우 자체 타임아웃 기능을 설정해야 합니다.
  • SSH 연결 자체의 타임아웃도 별도 설정이 가능합니다.(ex. ClientAliveInterval / ClientAliveCountMax)

 

SSH 연결 타임아웃 설정 예(서버 측)

# etc/ssh/sshd_config

ClientAliveInterval 300
ClientAliveCountMax 0

300초 동안 아무 활동이 없으면 세션 종료

변경 후 systemctl restart sshd 필요

728x90

+ Recent posts