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

ControlMaster — 연결 multiplex

~18 min · controlmaster, controlpath, controlpersist, multiplexing

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

복리로 쌓이는 최적화

ControlMaster 가 같은 host 에 여러 세션 위해 한 TCP+SSH 연결 재사용. 없으면 매 ssh, scp, rsync 가 새 연결 — TCP handshake + SSH 협상 매번 200–500 ms. 있으면 첫 연결이 master 되고 모든 다음 연결이 같은 채널 — 거의 즉각.

스크립트 작업에 극적 복리. 같은 host 20 번 SSH 하는 loop 가 "고통스럽게 느림" 에서 "본질적으로 공짜" 로.

세 directive

  • ControlMaster auto — 첫 연결이 master 됨; 나중 거 재사용.
  • ControlPath ~/.ssh/sockets/%r@%h-%p — socket 파일 어디 저장. %r 원격 user, %h host, %p port. 디렉토리 존재 확인.
  • ControlPersist 10m — 마지막 세션 닫힌 후 master 10 분 살아 있게. 그 안의 다음 ssh 즉각.

이상해질 때

Stale socket 이 유일한 진짜 실패 모드. Host 가 stuck (네트워크 변경, 버그) 하면 socket 파일 손으로 제거 또는 ssh -O exit hostname 으로 master 우아하게 종료.

Code

ControlMaster 셋업·bash
# Create the sockets directory once
mkdir -p ~/.ssh/sockets
chmod 700 ~/.ssh/sockets
~/.ssh/config 에 추가·ssh-config
Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%r@%h-%p
    ControlPersist 10m
    # ...other Host * settings
Master 관리·bash
# Open a master and detach
ssh -fN office

# Check master status
ssh -O check office
# Output: Master running (pid=12345)

# Gracefully exit a master
ssh -O exit office

# If a socket is stale and ssh -O exit fails:
rm ~/.ssh/sockets/you_username@192.168.1.100-22

External links

Exercise

위 snippet 처럼 ControlMaster 셋업. 시간 재 — 새 터미널에서 time ssh office uptime. 초 메모. 다시 — 실질적으로 더 빨라야 (sub-second). 세션 열린 동안 ssh -O check office 돌려서 master report 봐. 그다음 ssh -O exit office, 다시 시간 재 — master 사라져서 다시 느려야 함.

Progress

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

댓글 0

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

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