2026 클라우드 Mac 동시 SSH·화면 공유 잠금 해제 런북: PTY 자동화와 원격 GUI가 충돌할 때 MacLogin Apple Silicon을 되살리기
같은 macOS 사용자에서 헤드리스 ssh와 대화형 화면 공유를 섞으면 네트워크 장애도 CPU 포화도 아닌 것처럼 보이는 멈춤이 자주 납니다. 2026년 4월의 실무적 결론은 콘솔 세션 경합—WindowServer, loginwindow, PTY에 묶인 자동화가 같은 GUI 컨텍스트를 놓고 싸우는 현상—이며, 바깥으로는 불안정한 VNC처럼 보이지만 실제로는 로컬 잠금입니다. 이 글은 증상 매트릭스, 순서가 있는 9단계, 5열 포트·데몬 충돌 표, 티켓에 붙일 통합 로그 술어, MacLogin 홍콩·도쿄·서울·싱가포르·미국 리스 FAQ를 제공합니다.
함께 읽기: 공유 SSH 세션 거버넌스, VNC 클립보드·화면 기록 정책, SSH 키 로테이션과 2FA. 인시던트가 반납으로 끝나면 엔터프라이즈 오프보딩 삭제를 따르세요. 운영 링크: 요금, 도움말, VNC.
MacLogin에서는 한 리스가 한 제품 라인에 묶이는 경우가 많아 도쿄 장중과 싱가포르 CI 피크가 겹치면 사람이 화면을 보며 스크립트가 Aqua를 건드리는 구성이 늘어납니다. 먼저 콘솔 경합으로 분류하면 평균 복구 시간이 짧아지고, 단순 대역폭 문제로 오인하기 어렵습니다. 온콜 런북에는 9단계 순서를 고정하고, CI를 멈추지 않은 채 프로세스만 죽이는 지름길을 막으세요. 로그는 WindowServer와 screensharingd 20분 창을 반드시 포함해 감사에서 GUI 책임을 설명할 수 있게 하십시오.
압축 로그 파일명에 리스 ID와 리전 약어를 넣고 35일 보관하면 JP와 US 검토자가 같은 tarball을 공유하며 재수집 없이 검토할 수 있습니다.
동시 원격 세션이 멈출 때(층을 잘못 탓할 때)
2026년 4월 MacLogin 브리지에서 흔한 패턴은 다음과 같습니다.
- SSH를 통한 CI가
osascript나xcodebuild를 실행하고 사람은 화면 공유로 같은 데스크톱을 봅니다. - 보안 소프트웨어가 물리 콘솔에만 보이는 TCC 대화상자를 띄워 화면 공유에서는 보이지 않고 27–40분 동안 자동화를 막습니다.
- 여러 화면 공유 뷰어가
5900포워딩 위에 겹쳐 CPU가 한가해도 WindowServer GPU 사용이 85%를 넘습니다.
증상 매트릭스(재부팅 전에 열 고르기)
| 관측 신호 | SSH 쪽 가설 | 화면 공유 가설 | 첫 조치 | 수집 증거 |
|---|---|---|---|---|
| 커서는 움직이나 클릭 무반응 | sudo 비밀번호 헬퍼 정지 | WindowServer 정지 | CI 일시중지, 두 번째 뷰어 분리 | WindowServer 10초 샘플 |
| SSH는 입력을 받는데 GUI 멈춤 | PTY는 정상 | 콘솔 사용자 GUI 잠금 | 보조 관리자 계정 테스트 | loginwindow 하트비트 로그 |
| 약 5초 안에 둘 다 멈춤 | 커널 I/O 또는 APFS 스냅샷 | 동일 근본 | diskutil apfs listSnapshots | 스토리지 압력 그래프 |
| 약 11분마다 화면 공유 끊김 | 상류 유휴 TCP 타임아웃 | ARD 킵얼라이브 불일치 | SSH 터널 keepalive 60초 | 클라이언트 TCP 캡처 |
잠금 메커니즘: 콘솔, ARD 에이전트, SSH PTY
많은 macOS 자동화 원시 요소가 콘솔 사용자 세션에 묶입니다. 화면 공유는 그 세션을 스트리밍하고, SSH는 헤드리스로 남거나 암묵적으로 GUI가 필요한 도구를 호출합니다. 둘이 동시에 부담을 주면 우선순위 역전이 일어나 loginwindow는 인증을 계속하지만 WindowServer는 CGS 잠금 때문에 새 프레임을 합성하지 못합니다.
MacLogin 호스트에서 화면 공유는 보통 5900, 관찰 전용은 5901–5903입니다. 노트북 절전 후 -L 5900 전달을 중복하면 충돌합니다.
9단계 복구 런북(건너뛰지 말 것)
- 영향 범위를 티켓에: 리스 ID, 메트로(HK/JP/KR/SG/US), 콘솔 사용자명, 화면 공유 클라이언트 수, 대화형 SSH 수.
- UI 테스트를 돌리는 CI를 최소 6분 멈춰
osascript헬퍼가 빠져나갈 시간을 줍니다. - 화면 공유는 하나만 남기고 90초 기다린 뒤 응답을 판단합니다.
netstat -an | grep 590로 중복 SSH 전달을 제거합니다.- 거버넌스가 허용하면 보조 macOS 사용자로 전환하고 공유 빌드 계정 가이드에 따라 빌드와 운영자를 분리합니다.
- 다음 절의 술어로 통합 로그를 300초 수집해 gzip을 첨부합니다.
pmset displaysleepnow와 WoL로 디스플레이 절전 리셋을 시도해 재부팅 없이 합성기 상태를 풀 수 있습니다.- 7단계가 두 번 연속 실패할 때만 재부팅; JP 금융 테넌트는 거래 시간을 피하세요.
- 사후에 어떤 자동화가 화면 공유와 다시 겹치면 안 되는지 로스터에 기록합니다.
포트·데몬 충돌 매트릭스
| TCP 포트 | 일반 소유자 | 충돌 징후 | 완화 |
|---|---|---|---|
| 22 | OpenSSH | MaxStartups로 버스트 제한 | staging MaxStartups는 신중히; 점프 호스트 권장 |
| 5900 | 화면 공유 | 중복 SSH -L 전달 | 엔지니어마다 다른 로컬 포트 |
| 3283 | ARD 에이전트(레거시) | ARD+화면 공유 정책 혼재 | 서버 정책에서 미사용 ARD 기능 끄기 |
| 동적 | USB 세션 도구 | HID 에뮬레이션 테스트 | 전용 리스에서 HID 스위트 실행 |
통합 로그 술어와 증거 패키지
- WindowServer:
log show --last 20m --predicate 'process == "WindowServer"' - 화면 공유 인증:
log show --last 20m --predicate 'process == "screensharingd"' - SSH 세션 튜플: 각 막힌 세션에서
SSH_CONNECTION을보내 본문에 붙입니다.
보관 목표: 공유 버킷에 35일 압축 보관해 JP와 US 규제 검토자가 같은 tarball을 다시 당기지 않고 검토하게 합니다.
FAQ
SSH로 sudo pkill ScreenSharing을 해도 되나요? 유휴 뷰어를 모두 끊은 뒤에만. 그렇지 않으면 FileVault 잠금 해제 중인 엔지니어를 고립시킬 수 있습니다.
화면 공유를 전면 금지해야 하나요? 많은 macOS 프롬프트는 GUI가 필요합니다. 금지보다 유지보수 창과 CI 캘린더를 맞춘 예약 운영이 낫습니다.
MacLogin이 화면 공유 대역폭을 제한하나요? 메트로별 셰이핑은 요금에 문서화되어 있습니다. 포화된 장거리 경로에서는 지터가 커집니다.
동시 원격 워크플로에 Mac mini M4가 유리한 이유
M4는 GPU 프레임버퍼 경로가 넓고 미디어 엔진이 효율적이라, SSH로 큰 Xcode 로그를 tail하면서도 화면 공유를 매끄럽게 유지합니다. 통합 메모리는 작은 x86 VM에서 흔한 GPU/CPU 메모리 풀 분리 스래싱을 줄입니다. HK·JP·KR·SG·US 플릿 덕분에 GUI 집약 리스를 팀 가까이 두고 CI는 헤드리스에 두어 콘솔 맥락 혼선 위험을 낮출 수 있습니다.
이 런북을 적용한 뒤에도 월 3건을 넘기면 요금에서 리스를 나누는 편이 한 대에 Aqua 자동화와 사람의 화면 공유를 쌓는 것보다 저렴합니다.