How to set ssh timeout?
SSH(Secure SHell)은 네트워크에 연결되어 있는 다른 컴퓨터에 로그인하여 명령을 실행하고 파일 복사 등을 할 수 있도록 해주는 응용프로그램 또는 프로토콜을 말한다.
SSH는 기존에 유닉스 시스템에서 shell에 원격 접속하기 위해 사용하던 텔넷(telnet)은 암호화 과정이 없어 보안상 아주 취약한점을 보완하기 위해 등장한 말 그대로 보안(Secure) 셸(Shell) 이다.
서버를 관리할 때 SSH를 많이 사용한다. 원격으로 접속을 할 수 있는 서버인 경우에 소스 반영할때(배포할 때)나 관리할 때 아주 편리하기 때문이다.
ssh timeout을 설정하지 않은 경우 한 번 ssh를 연결해 놓으면 사용자가 연결을 끊지 않는 이상 계속 연결되어있다. 이는 보안상 위험할 수 있기 때문에 일정 시간이 지나면 자동으로 ssh 연결이 끊어지도록 설정해놓는 것이 보안상 조금 더 안전하다.
(네이버 nCloud같은 경우는 클라우드 서버를 생성하면 기본적으로 ssh timeout이 설정되어 있다.)
ssh timeout을 설정하는 방법은 여러가지이다. (추후에 또 알게 되면 추가할 예정)
첫번째 방법은 .profile 파일이나 .bashrc 파일을 수정하여 설정하는 방법이 있고 두번째 방법은 ssh의 설정파일인 sshd_config파일을 수정하여 설정하는 방법을 정리해보려고 한다.
나는 개인적으로 profile 파일에 수정하는 스타일이어서 profile을 많이 수정하는데 일반적으로 홈디렉토리에도 존재하고 /etc/ 디렉토리에도 존재한다.
두 파일의 차이점은 홈 디렉토리에 있는 profile은 홈디렉토리의 주인인 유저만 설정이 되고 /etc/ 디렉토리의 profile은 모든 유저에게 설정이 된다.
.profile 설정파일 수정
우선 /etc/profile 혹은 홈 디렉토리의 .profile 파일을 에디터로 열어주고 알아보기 쉽게 다음 내용을 추가해준다.
export TMOUT=300
※ 초단위
위의 내용을 넣어주고 저장한 다음에 source 명령어로 적용을 시켜준다.
$ source .profile
sshd_config
# vi /etc/ssh/sshd_config
위의 파일을 수정하기 위해서는 root권한이 필요하다. 해당 파일을 열어보면 다음과 같은 키값이 있을 것이다.
ClientAliveInterval 300
ClientAliveCountMax 0
ClientAliveInterval : 클라이언트가 살아있는지 확인하는 간격
ClientAliveCountMax : 클라이언트 응답이 없어도 접속 유지하는 횟수
따라서 간단하게 계산하면 ClientAliveInterval이 10으로 되어있고 ClientAliveCountMax가 3이면 30초 후에 접속이 끊기도록 되어 있는 것이다. 위의 설정으로는 단순하게 300초(5분) 후에 접속이 끊길것이다.
입맛대로 설정을 하여 저장한 후에 sshd (ssh 데몬)을 재실행해주면 설정이 적용될것이다.
# service sshd restart
확인하는 방법
# cat /etc/ssh/sshd_config | grep Client
ClientAliveInterval 300
ClientAliveCountMax 0