SSH에 비밀 메뉴가 있다는 거 아세요?

2 weeks ago 10

  • SSH 세션이 멈췄을 때 프로세스를 강제 종료할 필요 없이, SSH에 내장된 이스케이프 시퀀스 메뉴를 통해 다양한 제어 가능
  • 세션 내에서 ↵Enter 입력후 ~?를 입력하면 숨겨진 명령어 목록이 표시되며, ~.으로 어떤 상황에서도 즉시 연결 종료 가능
  • 이 이스케이프 시퀀스는 SSH 클라이언트 자체에 내장되어 있어 서버나 연결이 끊어진 상태에서도 동작
  • 중첩 SSH 세션에서는 ~~를 사용해 내부 클라이언트로 시퀀스를 전달할 수 있음
  • 추가로 -C, -v, -D 등의 유용한 SSH 옵션도 함께 소개

SSH 이스케이프 시퀀스 메뉴

  • SSH 세션 내에서 ↵Enter를 누른 뒤 ~?를 입력하면 지원되는 이스케이프 시퀀스 목록 확인 가능
  • 주요 시퀀스 목록:
    • ~. — 연결 종료 (멀티플렉싱된 세션 포함)
    • ~B — 원격 시스템에 BREAK 신호 전송
    • ~C — 커맨드 라인 열기 (포트 포워딩 설정 가능, help 입력으로 안내 확인)
    • ~R — rekey 요청
    • ~V/v — verbosity(LogLevel) 증가/감소
    • ~^Z — SSH 일시 중지(suspend)
    • ~# — 포워딩된 연결 목록 표시
    • ~& — SSH를 백그라운드로 전환 (연결 종료 대기 중일 때)
    • ~~ — 이스케이프 문자 자체를 전송 (두 번 입력)
  • 이 시퀀스들은 SSH 클라이언트 자체에 내장되어 있어, SSH 서버가 응답하지 않거나 연결이 끊어진 상태에서도 작동
  • 가장 유용한 것은 ~.으로, 세션이 멈췄을 때 어떤 상황에서든 즉시 종료 가능
  • 이스케이프 시퀀스는 새 줄(newline) 직후에만 인식

중첩 SSH 세션에서의 사용

  • SSH 세션 안에서 다시 SSH로 접속한 중첩 환경에서는 ~~를 사용해 내부 클라이언트로 시퀀스 전달 가능
  • 예시:
pinkie@stable:~$ ssh ponyville # stable pinkie@ponyville:~$ ssh manehatten # stable › ponyville pinkie@manehatten: ~$ # stable › ponyville › manehatten pinkie@manehatten:~$ Connection to manehatten closed. # ↵Enter `~~.` pinkie@ponyville:~$ # stable › ponyville pinkie@ponyville:~$ ssh manehatten stable › ponyville pinkie@manehatten: ~$ # stable › ponyville › manehatten pinkie@manehatten:~$ Connection to ponyville closed. # ↵Enter `~.` pinkie@stable:~$ # stable
  • stable → ponyville → manehatten으로 접속한 상태에서
  • ~~. 입력 시 가장 안쪽 세션(manehatten)만 종료되고 ponyville로 복귀
  • ~. 입력 시 중간 세션(ponyville)까지 종료되고 stable로 복귀

보너스 SSH 옵션

  • ssh -C — gzip 압축 활성화, 문서상으로는 빠른 네트워크에서 불필요하다고 되어 있지만 TUI 사용이나 대량 로그 출력 시 지연시간과 반응성 개선에 큰 효과
  • ssh -v — 상세 로깅 활성화 (-vv, -vvv로 더 많은 정보 출력 가능), 느린 연결이나 Raspberry Pi 같은 느린 장비 접속 시 연결이 멈춘 것인지 단순히 느린 것인지 판별에 유용
  • ssh -D 1234 — localhost:1234에 SOCKS 프록시 생성, 서버의 네트워크를 통해 접속 가능하여 서버 측 LAN 작업이나 간이 DIY VPN 용도로 활용 가능

Read Entire Article