Background
- Terraform으로 provisioner를 사용하는 중 계속해서 SSH timeout이 발생
-> "lost connection"의 에러가 발생했다. - 해결은 다른 방법이였지만, SSH timeout문제가 발생할 수 있어서 정리해 두는게 좋겠다.
SSH timeout?
SSH timeout을 설정하지 않은 초기값은 ssh 연결시, 연결 종료 전까지 계속 유지되게 설정되어있다. 이는 보안상으로 위험할 수 있기 때문에 일정 시간 후에 자동으로 ssh 연결이 끄늫어지도록 설정해두는게 보안상 유리하다.
# /etc/ssh/sshd_config
#ClientAliveInterval 0
#ClientAliveCountMax 3
ClientAliveInterval 0
: Client가 살아있는지 확인하는 간격 (기본값 0은 계속 연결을 의미)ClientAliveCountMax 3
: Client가 응답이 없어도 접속 유지하는 횟수
Configure
- CentOS 8 환경에서 진행
- Ubuntu 환경은 따로 표기
Method 1 : sshd_config
root
권한이 필요
sshd_config 파일을 열고
# vi /etc/ssh/sshd_config
다음 주석처리된 값들을 찾아서 주석해제 후 원하는 값으로 변경한다.
- #ClientAliveInterval 0
+ ClientAliveInterval 100 # 10분을 의미, 초단위는 그냥 숫자로 표현
- #ClientAliveCountMax 3
+ ClientAliveCountMax 3
sshd 데몬을 재실행한다.
- RHEL/CentOS
# systemctl restart sshd
- Ubuntu
# service sshd restart
설정 내용 확인
# cat /etc/ssh/sshd_config | grep Client
ClientAliveInterval 100
ClientAliveCountMax 3
Method 2 : profile를 통해
/etc/profile
혹은 home directory의 .profile
을 에디터로 연다.
- RHEL/CentOS
$ vi ~/.bash_profile
- Ubuntu
$ vi ~/.profile $ sudo vi /etc/profile
다음을 추가한다.
export TMOUT=300
변경된 profile을 적용한다.
- RHEL/CentOS
$ source ~/.bash_profile
- Ubuntu
$ source ~/.profile $ source /etc/profile
Calculate Timeout
timeout 시간 계산법은 다음과 같다.
timeout interval = ClientAliveInterval * ClientAliveCountMax
위의 예시대로 계산하면 300초 동안 유지되는 ssh timeout이 설정되었다.
Ref
'OS > Linux' 카테고리의 다른 글
[vagrant]생성 후 Permission denied(public key)나오는 오류 (0) | 2021.04.12 |
---|---|
[Linux] UTS namespace 맛보기 (1) | 2021.04.01 |
[Linux] Linux timezone 설정 명령어 (0) | 2021.01.11 |