포트 5900은 macOS 화면 공유와 관련된 대표적인 원격 데스크톱 진입점입니다. Apple의 원격 관리 문서에서도 이 포트를 확인할 수 있습니다. 원격 관리 포트 안내처럼 포트만 열려 있다고 화면이 보장되는 것은 아닙니다. macOS 27 원격 데스크톱이 연결되지 않을 때는 먼저 네트워크 불가, 인증 실패, 연결 후 검은 화면, 보기만 가능함을 구분해야 합니다. 그다음 공유 서비스와 권한, 방화벽, 로그인 세션을 차례로 확인하고, 재부팅과 실제 Xcode 작업으로 최종 판정합니다. 처음부터 macOS를 다시 설치하지 않습니다.
이번 주 권장 순서: 업그레이드 전후 시각과 전체 버전을 기록하고 오류 문구를 가린 뒤 보관합니다. SSH가 된다면 먼저 네트워크와 호스트 상태를 확인합니다. 마지막에는 단순 재접속이 아니라 재부팅, 연결 끊김 복구, Xcode 빌드를 모두 실행합니다.
이 글은 macOS 27 업그레이드 뒤 VNC 또는 화면 공유로 원격 Mac에 들어가지 못하는 개인 개발자를 위한 내용입니다. SSH는 되지만 Xcode나 Simulator를 열 수 없는 소규모 팀, 원격 Mac을 상시 iOS 빌드 머신으로 쓰려는 운영 담당자도 대상입니다.
주의: 2026년 9월 15일 기준 macOS 27의 공식 배포 상태는 Apple 개발자 릴리스 기록에서 다시 확인해야 합니다. 특정 클라이언트의 호환성 문제는 Apple이 공식 결함으로 확인하기 전까지 재현 대기 상태로 다뤄야 합니다.
연결 상태별 초기 판정
오류 메시지만 보고 VNC 문제라고 단정하면 해결 순서가 뒤섞입니다. 다음 네 가지 상태 중 하나를 먼저 선택합니다.
| 상태 | 먼저 볼 항목 | 중단 조건과 다음 단계 |
|---|---|---|
| 네트워크에 도달하지 않음 | SSH, 호스트 주소, 포트 접근, 방화벽 | SSH도 실패하면 화면 공유 설정보다 네트워크와 호스트를 먼저 처리합니다. |
| 인증 실패 | macOS 계정, VNC 제어 암호, 허용 사용자 | 자격 증명을 반복 입력하지 말고 인증 방식이 무엇인지 확인합니다. |
| 연결 후 검은 화면 또는 로그인 화면 고정 | 잠금 상태, 그래픽 로그인 세션, 재부팅 뒤 사용자 세션 | SSH가 되면 네트워크 수정은 멈추고 그래픽 세션을 조사합니다. |
| 화면은 보이나 조작 불가 | 화면 공유 권한, 원격 관리 권한, 입력 제어 | 보기 권한과 제어 권한을 분리해 다시 부여합니다. |
업그레이드 전 마지막 성공 시각, macOS 전체 버전, 사용한 접근 방식, 탈식별한 오류 문구를 한 줄씩 기록합니다. 호스트 주소, 계정 이름, 장치 식별자, 포트 번호가 로그에 포함되면 공유 전에 가립니다.
SSH 대조
SSH가 가능한지 확인하면 네트워크와 그래픽 경로를 분리할 수 있습니다.
ssh -o ConnectTimeout=10 <가린_계정>@<가린_호스트>
예시 출력은 다음처럼 실제 식별 정보 없이 기록합니다.
Last login: <가린_시간>
macOS <전체_버전>
$
SSH도 접속되지 않으면 VNC 암호를 바꾸는 작업을 중단합니다. 반대로 SSH는 되는데 VNC만 실패하면 호스트가 완전히 꺼진 것이 아니라 화면 공유 서비스, 인증, 방화벽 또는 사용자 세션을 조사해야 합니다.
공유 서비스와 권한 충돌
macOS의 Screen Sharing과 Remote Management는 이름이 비슷하지만 같은 방식으로 다루면 안 됩니다. Apple 화면 공유 안내와 접근 권한 안내를 기준으로 현재 환경이 어떤 관리 방식으로 설정됐는지 확인합니다.
먼저 다음 항목을 순서대로 확인합니다.
- Screen Sharing이 켜져 있는지 확인합니다.
- Remote Management가 별도의 관리 정책으로 활성화되어 있는지 확인합니다.
- 허용된 사용자 목록에 접속 계정이 남아 있는지 확인합니다.
- 해당 계정이 로그인 권한과 화면 제어 권한을 모두 보유하는지 확인합니다.
- 설정이 조직 관리 정책으로 잠겨 있는지 확인합니다.
두 서비스를 일반적인 스위치처럼 모두 켜고 끄는 방식으로 실험하지 않습니다. 한쪽이 다른 쪽의 접근 방식과 권한 구성을 바꿀 수 있기 때문입니다. 관리 프로파일이 설정을 잠갔다면 우회하지 말고 현재 상태와 오류 화면만 기록해 환경 관리 담당자에게 넘깁니다.
macOS 27 업그레이드 뒤 원격 데스크톱이 실패하는 원인은 무엇인가요?
업그레이드 자체가 모든 환경에서 같은 결함을 만든다고 볼 수 없습니다. 서비스 활성화 상태, 허용 사용자, 기존 권한 승인, 방화벽 규칙, 그래픽 세션이 함께 바뀌었는지 확인해야 합니다. Apple의 화면 공유 문제 해결 안내를 따라도 특정 환경에서만 반복된다면 탈식별한 재현 절차를 남깁니다.
인증 방식 분리
macOS 사용자 인증과 독립 VNC 제어 암호를 혼동하지 않습니다. Apple의 VNC 암호 설명에 따라 현재 접속 방식이 어느 자격 증명을 요구하는지 확인합니다.
- macOS 계정 인증을 쓰는 경우: 계정의 로그인 가능 여부와 화면 제어 권한을 확인합니다.
- 별도 VNC 암호를 쓰는 경우: 해당 암호가 설정되어 있는지, 접속 도구가 그 방식을 지원하는지 확인합니다.
- 두 방식을 동시에 추측하는 경우: 실패한 시각과 사용한 클라이언트만 기록하고 암호를 계속 바꾸지 않습니다.
예시 기록은 다음처럼 작성합니다.
접속 방식: 화면 공유
인증 방식: 가린 macOS 계정
결과: 인증 단계에서 거부
비교 결과: 다른 클라이언트에서도 동일
네트워크 입구와 방화벽
SSH, 서비스 리스닝 상태, VNC 클라이언트 메시지를 한 세트로 비교합니다. SSH가 성공하고 VNC만 거부되면 공인 네트워크 전체보다 화면 공유 서비스나 방화벽 규칙의 우선순위가 높습니다.
SSH 세션에서 서비스와 연결 상태를 확인할 때는 민감한 값을 저장하지 않습니다.
who
scutil --get ComputerName
netstat -an | grep LISTEN
출력 예시는 다음과 같이 필요한 상태만 남깁니다.
<가린_계정> console
<가린_호스트> ...
tcp4 0 0 *.5900 *.* LISTEN
리스닝 포트가 보이지 않는다고 곧바로 재설치하지 않습니다. 먼저 화면 공유가 실제로 켜져 있는지, 관리 정책이 서비스를 막고 있지 않은지, 업그레이드 뒤 첫 승인 대화 상자가 대기 중이지 않은지 확인합니다.
방화벽에서는 다음 항목을 확인합니다.
- 들어오는 연결 차단 상태
- 모든 수신 연결 차단 옵션
- 화면 공유 또는 원격 관리 서비스의 허용 상태
- 업그레이드 뒤 새 승인 요청의 대기 여부
Apple 방화벽 설정 안내에 따라 최소 범위만 허용합니다. 모든 방화벽을 끄는 것은 진단을 위한 짧은 비교에만 사용할 수 있으며, 결과를 확인한 즉시 원래 설정으로 되돌립니다. 방화벽을 끈 뒤 연결되었다면 장기 해결책은 방화벽 해제가 아니라 필요한 서비스만 허용하는 것입니다.
검은 화면과 로그인 세션
호스트가 온라인이라는 사실과 그래픽 세션이 사용 가능하다는 사실은 다릅니다. SSH가 정상인데 VNC 검은 화면이 나타나면 네트워크를 반복해서 변경하지 말고 다음 상태를 분리합니다.
- 사용자가 완전히 로그아웃된 상태인지
- 화면이 잠겼지만 기존 그래픽 세션은 살아 있는지
- 재부팅 뒤 로그인 화면에서 멈췄는지
- 시스템이 잠자기 상태인지
- 네트워크 깨우기가 실제 환경에서 동작하는지
원격 Mac은 SSH가 되지만 VNC 화면이 검을 때 어떻게 처리하나요?
먼저 SSH 연결을 유지한 채 화면 공유를 한 번만 다시 연결합니다. 그래도 검은 화면이면 현재 사용자의 로그인 상태와 콘솔 세션을 확인합니다. 사용자 세션을 복구할 수 있는 관리 콘솔이 없다면 반복적인 암호 변경보다 호스트 재부팅과 복구 경로를 검증하는 편이 안전합니다.
macOS의 잠자기와 네트워크 깨우기는 하드웨어, 전원 상태, 네트워크 구성에 영향을 받습니다. 상시 빌드 머신이라면 자동 잠자기 방지 설정을 적용하기 전에 보안과 전력 사용을 검토합니다. 임시 진단에서 잠자기를 막는 것과 상시 운영 정책으로 막는 것은 별도의 결정입니다.
보기 권한과 제어 권한
화면이 보이지만 마우스와 키보드가 작동하지 않으면 인증 성공을 복구 완료로 보지 않습니다. 화면 표시 권한과 입력 제어 권한이 분리되어 있을 수 있습니다.
Mac 화면 공유가 보기만 되고 제어되지 않을 때는 어떻게 하나요?
허용 사용자 목록에서 해당 계정의 화면 제어 권한을 확인하고, Remote Management로 관리되는 환경인지 확인합니다. 프로파일이 권한을 잠갔다면 사용자가 임의로 권한을 확대하지 말고 관리자가 정책을 수정해야 합니다. 제어 권한을 모든 사용자에게 넓히는 방식은 편하지만 보안 범위가 커지므로 임시 조치로도 기록이 필요합니다.
다음 비교로 서비스 계층과 클라이언트 계층을 나눕니다.
- macOS 기본 화면 공유 클라이언트로 접속합니다.
- 같은 계정과 같은 호스트를 사용해 다른 VNC 클라이언트로 한 번만 비교합니다.
- 두 클라이언트에서 같은 증상이면 서버 권한과 세션을 우선 조사합니다.
- 한 클라이언트에서만 실패하면 협상 방식이나 클라이언트 설정 문제로 분류합니다.
- 특정 클라이언트가 macOS 27에서 반드시 호환되거나 반드시 실패한다고 단정하지 않습니다.
복구 실행과 생산 환경 판정
다음 순서로 복구를 실행하면 각 단계의 효과를 분리할 수 있습니다. 각 단계에서 인력이 직접 개입했는지도 함께 기록합니다.
- 화면 공유와 VNC 연결을 끊고 다시 연결합니다.
- SSH가 가능하면 콘솔 사용자와 잠금 상태를 확인합니다.
- 잠금 화면에서 정상적인 사용자 세션 복구를 시도합니다.
- 원격 재부팅을 실행하고, 다시 접속하기까지의 상태를 기록합니다.
- 네트워크를 짧게 끊었다가 복구한 뒤 SSH와 VNC를 각각 확인합니다.
- 그래픽 세션에서 Xcode를 열고 프로젝트를 한 번 빌드합니다.
- Simulator 또는 다른 그래픽 도구를 실행합니다.
- SSH에서 최소 빌드를 실행해 명령줄 경로도 확인합니다.
예시로는 프로젝트와 민감한 경로를 노출하지 않는 범위에서 다음과 같이 기록할 수 있습니다.
xcodebuild -project <가린_프로젝트>.xcodeproj \
-scheme <가린_스킴> \
-configuration Release \
-destination 'generic/platform=iOS' build
판정 기준은 단순합니다. 재부팅 뒤 자동으로 그래픽 세션에 복귀하고, VNC 제어가 가능하며, Xcode 그래픽 작업과 SSH 빌드가 모두 성공하면 상시 운영 후보로 남길 수 있습니다. 반대로 재부팅마다 현장 조작이 필요하거나, 콘솔 접근과 호스트 재구축 방법이 없거나, 그래픽 세션이 반복적으로 사라지면 긴급 배포용 환경으로 사용하지 않는 편이 안전합니다.
원격 Mac을 재부팅한 뒤 그래픽 연결을 자동으로 복구하려면 무엇을 확인해야 하나요?
자동 복구는 VNC 옵션 하나로 완성되지 않습니다. 전원 복구, 네트워크 연결, 로그인 세션, 화면 공유 서비스, 사용자 권한, 재접속 경로를 함께 검증해야 합니다. 한 단계라도 수동 조작이 필요하면 자동 복구가 아니라 수동 복구 환경으로 분류하고, 상시 iOS 패키징 서버의 요구 수준을 낮추거나 재구축 가능한 호스트로 옮깁니다.
원격 Mac에서 Xcode와 iOS Simulator를 계속 사용해야 한다면 NodeMini의 원격 Mac 환경을 검토할 때도 같은 기준을 적용해야 합니다. 지역 선택보다 먼저 SSH 보조 경로, 재부팅 제어, 전체 권한, 그래픽 세션 복구 가능 여부를 확인해야 합니다.
현재 장비가 업그레이드 뒤 화면 공유를 잃고도 원격 재부팅이나 재구축 수단을 제공하지 않는다면, 그 장비는 긴급 발행용으로는 취약합니다. 직접 보유한 Mac은 물리 접근과 장기 안정성에서 유리하지만 초기 구매비, 유지 관리, 장애 시 현장 복구 부담이 있습니다. 일반적인 클라우드 빌드는 그래픽 세션과 로컬 Xcode 작업을 동일하게 제공하지 않을 수 있고, 화면 공유 오류가 발생했을 때 사용자가 직접 macOS 상태를 복구하기 어렵습니다. 이런 조건이라면 완전히 통제할 수 없는 기존 호스트를 계속 붙잡기보다, NodeMini의 Mac 렌탈 선택지처럼 SSH 보조 접속과 재구축 가능성을 먼저 확인할 수 있는 환경이 원격 Mac 운영에 더 적합합니다. 다만 장기간 고정 부하나 물리 기기 연결이 반드시 필요한 경우에는 직접 구매가 더 맞을 수 있습니다.