계층 진단 · 최소 ssh -L · ATS·키체인 · 시나리오 표 · 5단계 검증
Windows를 주력으로 클라우드 Mac을 빌릴 때 가장 자주 보는 유형은 빌드는 되는데 Simulator에서만 네트워크가 전부 타임아웃·TLS 오류라는 것입니다. 핵심은 localhost의 귀속입니다. Simulator는 원격 Mac에서 돌아가므로 그곳의 127.0.0.1은 그 Mac의 루프백이며 개발용 PC의 서비스와 다릅니다. 본문에서는 현상 계층화, ssh -L 최소 예시와 안전 경계, ATS·자체 서명·시스템 프록시 등 VNC가 여전히 필요한 단계, 시나리오별 표, 티켓에 붙일 5단계 검증을 정리합니다.회사망·SSH 터널(데스크톱 연결), Git·동기 방식, 30분 첫 사용과 함께 읽으면 개통부터 연동까지 한 흐름으로 잡을 수 있습니다.
문제를 네 겹으로 나누면 불필요한 코드 변경이 줄어듭니다. A 원격 Mac 자체가 외부로 못 나감 → 네트워크 글 우선. B 외부는 되지만 앱이 PC 루프백만 가리킴 → 포워딩 또는 배치 변경. C API가 사내 대역 → VPN 후 포워딩. D TLS·ATS·키체인 → 대개 GUI에서 한 번 통과. 아래는 자주 반복되는 오판입니다.
코드를 먼저 의심: 원격 Mac 터미널에서 curl -v http://127.0.0.1:PORT/health를 먼저 실행합니다.
Simulator를 실기와 동일시: USB로 PC에 붙는 경로는 없고 스택은 클라우드 Mac에만 있습니다.
포워딩 켰다고 끝: 바인드 주소·IPv6·포트 삼쌍을 맞추지 않으면 터널이 빈 돌입니다.
ATS 전면 해제: 도메인 단위 예외로 제한하고 릴리스 빌드를 오염시키지 않습니다.
SSH만으로 끝: 클라이언트 인증서·로컬 네트워크 권한은 Xcode와 같은 로그인 세션의 데스크톱이 빠릅니다.
팁: 티켓 제목에「어느 머신의 localhost인지」를 쓰면 왕복이 줄어듭니다.
목표: Windows의 127.0.0.1:3000을 원격 Mac에서 127.0.0.1:19000처럼 보이게 합니다. Windows에서 클라우드로 SSH를 열고 원격 루프백을 로컬 서비스에 연결합니다.
ssh -N -L 127.0.0.1:19000:127.0.0.1:3000 [email protected]
-N은 셸 없이 전달만. 팀은 19xxx 대역을 연동 전용으로 문서화해 충돌을 줄입니다. 사내 다른 호스트면 오른쪽을 바꾸고 PC가 그 IP로 라우팅되는지(VPN) 확인합니다.
안전: 불필요하게 0.0.0.0에 노출하지 않기; 세션이 끊기면 전달도 사라지므로 절전·로밍과 로그를 대조; 공급자의 TCP 포워딩 정책 확인; 금지 환경에서는 원격 nginx 스텁이나 게이트웨이로 우회합니다.
백엔드가 WebSocket을 쓰면 단순 HTTP curl만으로는 부족할 수 있으므로, 앱과 동일한 헤더·쿠키로 wscat이나 브라우저 개발자 도구를 원격 Mac의 데스크톱 세션에서 실행해 경로를 맞춥니다. 이때도 처음 신뢰·권한은 VNC 쪽이 빠릅니다.
포워딩은 TCP 도달을 보장하지만 ATS와 신뢰 사슬은 별개입니다. 개발 중에는 NSExceptionDomains로 도메인을 제한하고 루트 CA는 로그인 키체인에 넣어야 하며 이는 시스템 설정·키체인 접근 UI가 필요합니다. Charles/Proxyman 같은 HTTPS 프록시도 첫 신뢰가 GUI입니다. SSH는 전달·자동화, VNC는 일회성 승인·대조로 역할을 나누면 평균 복구 시간이 안정됩니다.
멀티플레이어로 노드를 쓸 때는 포트 대역을 사람마다 나누고, 누가 ssh -L을 띄웠는지와 언제 끊겼는지를 채팅이 아니라 티켓에 남겨야 합니다. 전달이 살아 있어도 Xcode 쪽 baseURL이 스테이징 호스트를 가리키고 있으면 동일 증상이 반복되므로, 환경 스위치(Debug/Staging)를 계층별로 한 번씩만 읽게 정리하는 것이 좋습니다. 사내 mTLS를 쓰는 경우에는 인증서 만료일을 키체인과 서버 로그에 동시에 표기해 두면 원격 세션에서의 재현이 쉬워집니다.
포워딩은 도착, ATS·키체인은 신뢰—후자는 VNC가 유리합니다.
| 시나리오 | 권장 | 여전히 VNC |
|---|---|---|
| API가 Windows에만 있음 | ssh -L | ATS, 신뢰 앵커 |
| 사내 대역 | VPN 후 전달 또는 이단 | 클라이언트 인증서 |
| 호스트·mTLS | 원격 리버스 프록시 | 키체인 등록 |
| 헤드리스 CI만 | SSH 스크립트 | 서명 실패 시 Organizer 등 |
| 공유 노드 | 포트 대역 분리 | 계정·프로비저닝 분리 |
원격에서 curl로 매핑 포트 확인(필요 시 -k는 개발 한정으로만).
Swift·크로스플랫폼 레이어의 baseURL 단일화.
Info.plist ATS 스냅샷을 PR에 첨부.
SSH 킵얼라이브·절전으로 세션이 끊겼는지 확인. 세션 복구 참고.
VNC에서 Safari·설정으로 프록시·신뢰를 로그와 대조.
원격 Mac 루프백입니다.
TCP에는 보통 충분, 신뢰·권한은 VNC가 안전합니다.
그 글은 화면 연결, 본문은 Simulator API 연결입니다.
시간의 대부분은 문법보다 localhost 귀속과 신뢰 체인을 누가 GUI로 완료했는지에서 소모됩니다. SSH만 고집하면 키체인과 로그가 엇갈리고 VNC만 쓰면 포트 규약이 흐릅니다. 둘을 Runbook으로 묶으면 평균 복구가 안정됩니다. 운영팀에 넘길 때는 재현 절차·포트 번호·ATS 스냅샷·SSH 로그 한 줄을 함께 붙이면 책임 분리가 명확해집니다.
자체 하드웨어는 절전·업데이트·감가가 따르고 저사양 PC는 IDE·백엔드·터널에 메모리가 부족합니다. 클라우드 Mac을 빌려 SSH와 VNC를 공식 경로로 병행하면 가동률과 베이스 이미지는 공급자에, API·인증서 책임은 팀에 남깁니다.
하드웨어를 늘리고 싶지 않다면 VNCMac으로 클라우드 Mac을 검토하세요. 주 버튼은 구매 페이지, 비교는 홈에서 가능합니다.