이 노트에 대하여
SSH 비밀키, ssh-agent, ProxyJump를 엮어 내부망/외부망을 오가는 원격 접근 구조를 설계한 기록이다. 실제 서버 정보(호스트·포트·키 지문)는 이 방에 담지 않는다 — 그 검수와 관리는 NixOS 설정 쪽에서 힣이 직접 한다. 여기는 패턴만 남긴다.
히스토리
- @junghan + @mitsein/claude-sonnet-5 — 표준 구조로 수선. 실제 외부망 IP·포트·GPG 키 지문이 노출되어 있던 것을 발견해 힣이 직접 내용을 제거했고, 남은 부분을 관련메타·관련노트를 갖춘 패턴 중심 노트로 재구성했다.
:ARCHIVE:태그는org-export-exclude-tags=(=denote-export-config.el)에 없어 export를 막지 못한다는 점도 함께 확인 — 다음부터는:noexport:=/:private:=/=:CREDENTIAL:= 중 하나를 쓴다. - 노트로 옮김.
- 비밀키·공유키 워크플로우의 핵심 단어를 남긴다.
관련메타
관련노트
- [#LLM: 클라우드 원격 개발서버 - 이맥스 §Tramp 활용]
- [tailscale tramp emacs 연결 원격 근무]
- ◊Tramp 슈퍼유저 이맥스 ◊sudo #권한
왜 프록시 점프인가
노트북에서 GPU 노드로 바로 들어가고 싶지만, 노드는 내부망에만 열려 있다. 중간 경유지(스토리지 서버 등)를 통해 터널링하는 것이 ProxyJump의 역할이다. 경유지 자체도 관리 대상이라 인증 키를 이중으로 신경 써야 한다 — 경유지에 비밀키를 두지 않으려 했지만, 경유지에서도 인프라 관리(cockpit, 모니터링 등)를 하려면 결국 인증 키가 필요해진다는 것이 실전에서 드러난 긴장이다.
내부망/외부망 경로 분리
같은 목적지라도 접속 경로를 내부망용과 외부망용으로 분리해 두면 네트워크 환경에 따라 유연하게 전환할 수 있다. 외부망 경로는 ServerAliveInterval=/=ServerAliveCountMax=/=TCPKeepAlive 로 연결 안정성을 더 신경 써야 한다.
ssh-agent vs IdentityFile
- ssh-agent: 개인키를 메모리에 등록해 두면 여러 서버에 반복 입력 없이 접속할 수 있다. 여러 키를 동시에 관리할 때 유리하다.
- IdentityFile 명시: 어떤 키로 접속하는지 config에 못박아 두는 방식. 예측 가능하고 단순해 실무에서는 이쪽을 더 선호하게 됐다.
ControlMaster — 연결 재사용
동일 호스트에 재접속할 때 기존 연결을 재사용하면 인증 과정을 생략해 속도가 빨라진다. 터미널과 Emacs TRAMP가 같은 소켓을 공유하도록 ControlPath 를 맞추는 것이 핵심이다.
TRAMP 최적화 메모
tramp-ssh-controlmaster-options로 ControlMaster를 TRAMP에도 위임할 수 있다. Emacs Lisp 문자열 안에서는%r/%h/%p를%%r/%%h/%%p로 이스케이프해야 한다.RequestTTY force는 TRAMP의 비대화형 명령 실행을 방해하므로 제거하는 편이 낫다.- 소켓 디렉토리는
700으로 만들어 둔다.
auth-source 우선순위
TRAMP+SSH 키 인증에는 auth-source가 필요 없다. 대신 Forge(GitHub API), mu4e/Gnus(SMTP), ERC/IRC 같은 서비스는 필수다. password-store=(pass)를 먼저 찾고 없으면 =~/.authinfo.gpg 로 폴백하는 2단 구조가 핵심 패턴이다.
핵심 요약
- 내부망/외부망 분리 — 같은 목적지, 다른 경로. 환경 따라 전환.
- ControlMaster — 터미널·TRAMP 공용 소켓으로 재접속 속도 개선.
- TRAMP 주의점 —
RequestTTY force제거,%이스케이프. - 인증 관리 — pass 우선, authinfo.gpg 폴백.
- 실제 호스트·포트·키는 여기 없다 — 그건 NixOS 설정 저장소가 SSOT다.
Comments