C.W.K.
Stream
Lesson 06 of 12 · published

KeepAlive

~15 min · keepalive, server-alive, nat-timeout, frozen-session

Level 0Pinger
0 XP0/101 lessons0/12 achievements
0/150 XP to next level150 XP to go0% complete

SSH 세션이 조용히 죽는 이유

유휴 SSH 연결이 경고 없이 사라질 수 있어. NAT 테이블 만료, 방화벽이 유휴 TCP drop, 노트북 sleep — 어느 하나가 SSH 가 세션 살아 있다고 생각하는 동안 path 가 죽게 만듦. 다음 키 칠 때 세션이 영원히 hang 또는 결국 헷갈리는 에러로 timeout.

ServerAliveInterval — proactive keepalive

ServerAliveInterval 60 설정이 SSH 한테 60 초마다 암호화된 keepalive 패킷 보내라고 지시. ServerAliveCountMax 3 가 "3 번 연속 답 없으면 포기하고 깨끗이 끊어". 함께 — 분마다 keepalive, 무한 hang 대신 3 분 침묵 후 깨끗한 disconnect.

Keepalive 패킷 작아. 비용 미미. 항상 Host * 에 설정. SSH 가 조용히 freeze 하길 원하는 시나리오 없어.

서버 쪽 등가물

서버는 /etc/ssh/sshd_config 에 거울 directive — ClientAliveIntervalClientAliveCountMax. 서버 시점에서 같은 일 — 연결 잃은 클라이언트 쫓아내는 데 유용 (안 그러면 PTY 가 영원히 남음).

Code

글로벌 keepalive 설정·ssh-config
# In ~/.ssh/config — applies to every host
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
서버 쪽 거울·bash
# /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 3

# Validate and restart
sudo sshd -t
sudo systemctl restart sshd

# macOS: toggle Remote Login off/on in System Settings

External links

Exercise

~/.ssh/configHost * block 에 ServerAliveInterval 60ServerAliveCountMax 3 추가. 원격 머신 SSH, 1 분 유휴, 명령 실행 — keepalive 가 path 열어둬서 즉각 동작해야 함. 그 directive 없으면 NAT 위 유휴 세션이 freeze 경향.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.