2026 소규모 팀 원격 Mac SSH 협업 실수 방지: Jump Host 통합 진입·역할별 인증서 로테이션
기술 리더·협업 개발자용 SSH 운영 글: 원격 Mac 풀에서 Jump Host vs 직접 연결, 권한 분리·인증서 로테이션·감사. GUI는 SSH vs VNC·권한 격리 참고.
01 아키텍처 선형 비교표
초기에는 곧바로 ssh mac-build-01로 붙다가 IP 허용·MFA가 제각각이 되고, 퇴사 후에도 키가 남습니다. Jump Host(베스천)는 내부 노드로 포워딩하는 단일 진입점이며, 정책을 한곳에서 강제하는 패턴입니다.
| 기준 | Jump Host(베스천) | 원격 Mac 직접 SSH |
|---|---|---|
| 공격 표면 | 단일 강화 진입; 노드는 사설 IP에 둘 수 있음 | Mac마다 22번(또는 커스텀) 포트가 넓은 네트워크에 노출될 수 있음 |
| 정책 집행 | 중앙 MFA·PAM·허용 목록·세션 로깅 | 호스트마다 통제를 복제하거나 VPN에만 의존 |
| 지연·DX | 홉 1 증가; ProxyJump·다중화로 완화 |
경로가 깨끗하면 RTT 최소 |
| 침해 시 파급 | 베스천 탈취는 치명적—역할 분리·동서향 모니터링 필수 | 해당 호스트가 즉시 노출 |
| 적합한 경우 | 다중 노드 풀, 규제·공유 Mac 인벤토리 | 단일 노드, VPN 전용, 비상 경로 |
한 줄: 주 단위 다인·원격 Mac·네트워크 전담 없음 → Jump Host + 사설 IP 기본. VPN+posture 문서화 시 직접 SSH 예외. 공유 빌드는 SSH/VNC FAQ.
02 계정 및 역할 모델
Unix 계정은 공용 계정이 아니라 사람·자동화 주체에 매핑합니다. SSH 권한 분리는 개발자·CI·진단·비상 관리용 principal을 나누는 것입니다. Jump Host에서는 forced command·Match User로 자동화의 과도한 셸을 막습니다.
- 개발자: 승인된 노드에서 대화형 셸; 티켓 없이 sudo 금지.
- CI·러너:
command=또는 범위가 제한된PermitOpen을 가진 비대화형 인증서·키. - 운영자: 서비스 재시작·로그 열람; 일상 개발 키와 분리.
- 비상(break-glass): 오프라인 보관·이중 통제, 유효기간 최대 90일, 분기별 폐기 훈련.
03 인증서 생성 및 배포 단계
OpenSSH 사용자 인증서는 짧은 접근을 서명합니다. 호스트가 SSH CA를 신뢰하면 authorized_keys 복제 부담이 줄어듭니다. macOS에서는 ssh-keygen -s … -V +30d 루프가 핵심이며, CA 개인키는 HSM·오프라인·금고 쪽에 두고 공인망 Jump 본체에는 두지 마세요.
TrustedUserCAKeys에 사용자 CA 공개키, 클라이언트 known_hosts에는 호스트 CA(@cert-authority)를 신뢰합니다.developers, ci-readonly)만 매핑합니다.-V 유효 기간과 필요 시 -O force-command를 명시해 발급합니다.ssh -vv로 검증한 뒤 비밀번호 폴백을 끕니다.CA 전 최소: 퇴사 키 회수·단일 Jump·ed25519. Mac이 늘면 인증서 로테이션 확장은 CA가 답입니다.
04 로테이션 및 폐기 프로세스
겹침 없이 갈아끼우면 장애입니다. 신규 발급 → 신뢰 반영 → 카나리 → 구 자격 폐기 순서를 지키세요. CA는 KRL 또는 시리얼 서명 중단으로 각 sshd에 반영합니다.
| 역할·주체 유형 | 권장 유효기간 | 로테이션 주기 | 비고 |
|---|---|---|---|
| 대화형 개발자(SSH 사용자 인증서) | 30~90일 | 월간 또는 분기 | 변경 창에서 하루 겹쳐 두 유효 인증서 유지 |
| CI·자동화 주체 | 7~30일 | 배포 열차마다 또는 주간 | 파이프라인 시크릿 로테이션과 짝; 인간 재사용 금지 |
| Jump Host 호스트 키(인증서 기반) | 최대 365일 | 연간·단계적 UpdateHostKeys |
TOFU 프롬프트 방지를 위해 호스트 인증서를 잠시 병행 공개 |
| 장기 정적 사용자 키(레거시) | 해당 없음 | 최대 90일 강제 | 기술 부채로 관리하고 CA 서명으로 이전 |
| 비상 관리자 | 24시간~7일 | 사건마다 + 분기 훈련 | 자동 만료·사용마다 로그·사후 즉시 폐기 |
퇴사: principal 폐기 → KRL → 정적 키 제거를 스크립트화. CA 소유자는 시크릿·최소 권한과 동일 인력이 단순합니다.
05 감사 및 최소 권한
Jump·각 Mac에서 시각·IP·principal·시리얼·대상·성공 여부 등 연결 메타데이터만 모으세요. 환경 변수·명령 본문은 컴플라이언스 요구 시에만. 이상 징후·폐기 후 성공 인증에 알림을 겁니다. 파일 ACL·서명 키체인·CI 비관리자 원칙은 공유 빌드 노드 설정과 같이 적용합니다.
- 로그 중앙화: 팀당 SIEM 버킷 하나, 접근 검토용 최소 90일 보관.
- 분기 접근 검토: HR 퇴사 티켓과 아직 유효한 SSH principal 대조.
- 폐기 리허설: 연 2회 무작위 인증서를 골라 폐기 후 5분 내 연결 실패 확인.
06 자주 묻는 질문 (FAQ)
소규모 팀은 언제 Jump Host를 쓰고 언제 직접 SSH하나요?
중앙 MFA·허용·세션, 노드 비공인 노출이면 Jump Host. 강한 VPN+문서화 통제면 직접 SSH 예외.
SSH 사용자 인증서와 장기 키, 공유 풀에는 무엇이 맞나요?
인증서: 짧은 TTL·빠른 폐기·역할 principal. 정적 키는 엄격 로테이션 시만. 수동 authorized_keys는 부패하기 쉽습니다.
개발자·자동화·관리자 로테이션 주기는?
표 준수: 개발자 30~90일, 자동화 7~30일, 비상은 수시간~수일. 겹침·롤백 인증서 유지.
비밀 없이 SSH를 어떻게 감사하나요?
메타데이터와 결과만 기록하고, 정책이 요구할 때만 베스천에서 전체 세션 캡처를 검토합니다. HR·티켓과 상관 분석하고 이상 징후에 알림을 겁니다.