SSH 원격 세션 타임아웃 해결하기

문제 상황

원격 SSH로 접속해서 htop이나 다른 프로그램을 실행해 놓으면, 시간이 지나면서 세션이 멈추는 현상이 발생했습니다.

원인 분석

SSH 연결이 끊기는 주요 원인:

  • 서버/클라이언트의 타임아웃 설정
  • 중간 네트워크 장비(라우터, 방화벽)에서 연결 끊김
  • TCP keepalive 미설정

해결 방법

1. 서버측 설정 (Linux SSH 서버)

/etc/ssh/sshd_config 파일을 수정합니다:

# TCP 레벨 연결 유지 활성화
TCPKeepAlive yes

# 30초마다 클라이언트에게 연결 확인 신호 전송
ClientAliveInterval 30

# 최대 10회까지 무응답 허용 (30초 × 10 = 5분)
ClientAliveCountMax 10

설정 후 SSH 서비스 재시작:

sudo systemctl restart ssh

2. 클라이언트측 설정 (접속하는 PC/Mac)

~/.ssh/config 파일을 생성하거나 수정합니다:

Host 서버별칭
    HostName 서버주소
    Port 포트번호
    User 사용자명
    ServerAliveInterval 30
    ServerAliveCountMax 10
    TCPKeepAlive yes

3. 설정 효과

변경 전:

  • 60초 × 3회 = 최대 3분 무응답 허용

변경 후:

  • 30초 × 10회 = 최대 5분 무응답 허용
  • 서버와 클라이언트 양쪽에서 연결 상태 확인
  • TCP keepalive로 중간 네트워크 장비의 연결 끊김 방지

추가 팁

tmux/screen 사용

세션이 끊겨도 프로세스가 계속 실행되도록 하려면:

# tmux 설치 (Ubuntu/Debian)
sudo apt install tmux

# tmux 세션 시작
tmux

# 세션 분리: Ctrl+b, d
# 세션 재접속: tmux attach

SSH config로 간편 접속

설정 파일 작성 후:

# 이전
ssh -p 15001 user@example.com

# 이후 (더 간편!)
ssh 서버별칭

참고사항

  • 설정은 서버와 클라이언트 양쪽 모두 적용하는 것이 가장 안정적입니다
  • 회사 방화벽이나 공유기에서 추가적인 타임아웃 설정이 있을 수 있습니다
  • VPN을 사용하면 더욱 안정적인 연결을 유지할 수 있습니다

Leave a Comment