Windows PC에 뜬 관리자 권한 요청(UAC 창)을 연결해 둔 Android 휴대폰에서 확인하고 승인하거나 거부하는 프로그램입니다. PC 앞에 없어도 휴대폰으로 알림을 받고 지문 한 번으로 답할 수 있습니다.
- 집 PC에서 AI 코딩 에이전트에게 작업을 맡겨 두고 외출했는데, 에이전트가 도구를 설치하거나 시스템 설정을 바꾸려고 관리자 권한을 요청할 때
- 원격 접속 프로그램으로 집 PC를 쓰는데, 접속 프로그램에 따라 UAC 창이 원격 화면에 나타나지 않거나 눌리지 않을 때
- 밤새 걸어 둔 프로그램 업데이트, 드라이버 설치, 백업 스크립트가 도중에 관리자 권한 창을 띄워 놓고 멈춰 있을 때
- 관리자 계정에 뜨는 '예/아니요' 동의 창을 휴대폰에서 승인하거나 거부합니다.
- 비밀번호나 PIN을 입력하는 자격 증명 창과 Windows Hello 확인 창은 지원하지 않습니다. 이런 창은 PC에서 직접 처리하십시오.
- 원격 제어 프로그램이 아닙니다. 휴대폰으로 PC를 조작하거나 프로그램을 실행하지 않고, PC에 이미 뜬 창에 답만 합니다.
- 휴대폰 승인을 쓰는 동안에도 PC 앞에서 직접 [예]나 [아니요]를 누를 수 있습니다.
PC
- Windows 11 (x64)
- TPM (Windows 11이 설치된 PC라면 대부분 켜져 있습니다)
- Microsoft Edge WebView2 런타임 (Windows 11에는 기본으로 들어 있습니다)
- UAC 기본 설정. 보안 데스크톱을 끄거나 '알리지 않음'으로 낮추면 휴대폰을 연결할 수 없습니다.
휴대폰
- Android 12 이상, 64비트 ARM
- 화면 잠금 (PIN, 패턴 또는 비밀번호)
- 2026년 1월 이후 보안 패치, 하드웨어 보안 키(TEE 또는 StrongBox). 연결할 때 PC가 이 키를 확인합니다. 루팅했거나 부트로더를 푼 휴대폰도 같은 확인을 거쳐 연결할 수 있습니다. 부트로더가 풀려 있거나 제조사 것이 아닌 운영체제로 시작한 휴대폰이면 PC의 연결 화면이 그 사실을 알려 줍니다. 루팅했는지 자체는 확인하지 않으므로, 이 안내가 없다고 해서 루팅하지 않은 휴대폰이라는 뜻은 아닙니다.
- 릴리스 페이지에서 두 파일을 받습니다.
- PC용
uac-remote-controller-windows-x64-setup.exe - 휴대폰용
uac-remote-controller-android-arm64.apk
- PC용
- 받은 파일이 맞는지 확인하려면 PowerShell에서
Get-FileHash <파일>로 SHA-256을 구해 같은 릴리스의SHA256SUMS.txt와 비교하십시오. APK 서명 인증서의 SHA-256은 모든 릴리스에서c975b78a34dd622d19c4af329e4f71bfa895693ff04db5116aa718fd9aa20c22입니다(apk-signer.txt에도 있습니다). - PC에서 설치 파일을 실행합니다. 설치 파일에 코드 서명이 없어 'Windows의 PC 보호' 창이 뜨면 [추가 정보]를 누른 뒤 [실행]을 누르십시오. 설치 프로그램은 아래 세 가지를 합니다.
C:\Program Files\휴대폰 승인에 프로그램을 설치하고 Windows 서비스 '휴대폰 승인'을 등록합니다. 이 서비스는 PC를 켜면 자동으로 실행됩니다.- 휴대폰이 접속할 수 있도록 Windows 방화벽에 TCP 7443 규칙을 추가합니다. 이 규칙은 '개인 네트워크' 프로필에서만 열립니다.
- 공유기 설정은 바꾸지 않습니다.
- 휴대폰에 APK를 설치합니다. 처음이라면 파일을 연 앱(브라우저나 파일 관리자)에 '출처를 알 수 없는 앱 설치'를 허용해야 합니다. 앱을 처음 열면 알림 권한을 허용하고, 화면 잠금이 없다면 [화면 잠금 설정]으로 설정하십시오.
PC와 휴대폰을 같은 공유기(같은 Wi-Fi)에 연결한 상태에서 진행합니다. 연결할 때 PC는 인터넷으로 Google의 Android 키 폐기 목록을 조회합니다.
- PC 앱의 [휴대폰 관리] 탭에서 [QR 코드 보기]를 누릅니다. Windows 권한 확인(UAC)이 한 번 뜨는데, 아직 연결한 휴대폰이 없으면 PC에서 직접 승인하십시오.
- 보호된 PC 화면이 열리면 [QR 코드 보기]를 눌러 QR 코드를 표시합니다.
- 휴대폰 앱에서 [PC의 QR 코드 촬영]을 누르고 카메라 권한을 허용한 뒤 QR 코드를 비춥니다.
- PC와 휴대폰에 여섯 자리 숫자가 뜹니다. 두 숫자가 같으면 양쪽에서 [숫자 일치]를 누르고, 다르면 [다릅니다, 취소]를 누르십시오.
- '휴대폰을 연결했습니다.'가 뜨면 끝입니다. [PC 상태] 탭에 '휴대폰 연결됨'이 표시됩니다.
PC 한 대에 휴대폰을 32대까지, 휴대폰 한 대에 PC를 32대까지 연결할 수 있습니다. 연결을 끊으려면 PC의 [휴대폰 관리] 탭이나 휴대폰의 [연결된 PC] 탭에서 [등록 삭제]를 누르십시오.
- PC에 UAC 창이 뜨면 1~2초 안에 휴대폰에 '관리자 권한 승인 요청' 알림이 옵니다. 창이 다 그려질 때까지 기다렸다가 보냅니다.
- 알림이나 앱의 [요청] 탭에서 PC 이름, 프로그램, 실행 파일 경로를 확인합니다. [더 보기]를 누르면 명령줄 같은 세부 내용이 보입니다.
- [승인]을 누르면 지문이나 화면 잠금으로 본인 확인을 한 번 더 거칩니다. [거부]는 본인 확인 없이 바로 보냅니다.
- 결과는 누른 자리에 바로 표시됩니다. '승인 완료'는 PC가 창의 [예]를 눌렀다는 뜻이고, '거부 완료'는 [아니요]를 눌렀다는 뜻입니다.
요청 하나는 110초 동안 유효하며, PC에 창이 계속 떠 있으면 자동으로 연장됩니다. 휴대폰이 요청을 받은 뒤 PC의 창 내용이 달라지면 PC는 버튼을 누르지 않고 같은 요청을 새로 보냅니다. 이때 휴대폰에는 'PC가 같은 요청을 다시 보냈습니다'가 표시되니 새 요청에서 다시 선택하십시오.
휴대폰의 [알림 시간] 탭에서는 요청을 받을 시간(항상, 받지 않음, 요일과 시간 지정)과 알림 방식(소리, 진동만, 무음)을 정합니다. 지정한 시간 밖에 뜬 요청은 휴대폰에 오지 않고 나중에도 표시되지 않습니다. 같은 탭에서 휴대폰 승인을 끄거나, 휴대폰을 켤 때 자동으로 실행할지 정할 수 있습니다.
PC의 '휴대폰 승인' 서비스가 TCP 7443 포트에서 휴대폰의 접속을 직접 받습니다. 같은 공유기에 연결된 휴대폰은 따로 설정하지 않아도 PC에 붙습니다. PC 앱 창을 닫아도 서비스가 켜져 있으면 계속 동작합니다.
방화벽 규칙이 '개인 네트워크' 프로필에서만 열리므로, Windows 설정 > 네트워크 및 인터넷에서 집 네트워크를 '개인 네트워크'로 지정해 두십시오.
다른 프로그램이 7443 포트를 먼저 쓰고 있으면 서비스는 연결을 받지 못합니다. 이때 PC 앱은 그 프로그램의 이름(이름을 읽지 못하면 PID)을 보여 줍니다. 은행이나 공공기관 사이트용 보안 프로그램이 자주 로컬 포트를 씁니다. 그 프로그램을 끄거나 포트 설정을 바꾸면 서비스가 1초 안에 다시 연결을 받습니다. 서비스는 7443을 다른 번호로 바꾸지 않습니다. 휴대폰에 저장된 주소와 공유기의 포트포워딩이 모두 7443을 가리키기 때문입니다.
휴대폰이 모바일 데이터나 다른 Wi-Fi에 있을 때도 PC에 접속하게 하려면 PC 앱의 [외부 연결] 탭에서 방법을 하나 고릅니다. 설정을 저장할 때 Windows 권한 확인이 한 번 뜹니다.
-
자동: 공유기가 UPnP나 PCP를 지원하면 PC가 공유기에 포트를 직접 열고 10분마다 갱신합니다. 다른 기기가 쓰는 포트 설정은 덮어쓰지 않습니다.
-
공유기에서 포트를 직접 열었음: 공유기가 자동 설정을 지원하지 않으면 이 방법을 씁니다.
- [외부 연결] 탭에서 이 방법을 고르고 '공유기의 외부 포트'에 쓸 번호를 정합니다. 공유기에 이미 포트포워딩을 해 두었다면 그 번호를 그대로 넣으면 되고, 원하는 번호를 넣어도 됩니다. 정한 번호가 없을 때만 [무작위로 고르기]를 누르십시오. 20000~60999 사이에서 하나를 뽑아 줍니다. 이 앱을 쓰는 PC가 집에 여럿이면 PC마다 번호가 달라야 합니다. 외부 포트와 내부 포트를 따로 적을 수 없는 공유기라면 7443을 넣으십시오.
- 탭에 나온 안내대로 공유기 관리 페이지의 포트포워딩 메뉴에서 그 외부 포트를 이 PC의 내부 주소와 7443 포트(TCP)로 연결합니다. 내부 포트는 어느 PC에서나 7443입니다.
- PC의 내부 주소가 바뀌지 않도록 공유기에서 이 PC에 주소 예약(DHCP 고정 할당)을 해 두십시오.
- [저장]을 누릅니다. PC가 STUN 서버(Google, Cloudflare)에 물어 공인 주소를 알아냅니다.
번호는 처음 설정할 때 한 번 정하십시오. 나중에 바꾸면 공유기의 포트포워딩도 고쳐야 하고, 휴대폰도 집 Wi-Fi에 한 번 연결해야 새 주소를 받습니다. 무작위 번호는 다른 포트포워딩과 겹치지 않게 하려는 것이고, 숨기는 효과는 없습니다. 연결을 지키는 것은 포트 번호가 아니라 PC와 휴대폰이 서로 확인하는 암호화 키입니다.
DMZ로도 동작하지만 권하지 않습니다. 공유기의 DMZ 호스트는 요청하지 않은 인바운드 연결을 전부 이 PC로 넘기므로, PC에 열린 다른 포트까지 인터넷에 드러나고 그것을 막는 것은 Windows 방화벽뿐입니다.
-
외부 주소 직접 입력: 고정 공인 IP처럼 밖에서 이 PC에 닿는 주소를 알고 있으면
IP:포트형식으로 입력합니다.
휴대폰은 PC가 서명해 보낸 주소 목록을 받아 두었다가, 집 Wi-Fi를 벗어나면 그 주소로 접속합니다. 외부 연결 설정을 바꾼 뒤에는 휴대폰을 집 Wi-Fi에 한 번 연결해야 새 주소를 받습니다. Wi-Fi와 모바일 데이터 사이를 오갈 때는 휴대폰이 여러 주소에 동시에 접속을 시도하고 먼저 붙는 쪽을 씁니다. Wi-Fi를 끈 뒤 모바일 데이터로 다시 붙기까지 1초 안팎이 걸린 것을 실제 기기에서 측정했고, 집 밖 네트워크에서 UAC 창을 승인하는 것도 확인했습니다.
통신사가 공유기에 공인 IP를 주지 않는 환경(CGNAT)이나 회사망처럼 포트를 열 수 없는 곳에서는 위 방법이 통하지 않습니다. 이때는 외부 중계 서버를 쓰십시오.
공인 주소가 있는 서버에서 중계 프로그램을 실행하고, PC가 그 서버를 거쳐 휴대폰과 연결하게 하는 방법입니다. 중계 서버는 암호화된 내용을 풀지 못하므로 승인을 만들어 내거나 요청 내용을 볼 수 없습니다.
- 릴리스의
uac-relay-linux-x64나uac-relay-windows-x64.exe를 서버에서 실행합니다. 기본값은127.0.0.1:7443이라 밖에서 접속할 수 없으니--listen 0.0.0.0:443처럼 주소를 지정하십시오. 중계 프로그램은 서비스로 등록되지 않고 방화벽도 열지 않으므로, 서버의 방화벽과 자동 실행은 직접 설정해야 합니다. Ctrl+C로 멈춥니다. - PC 앱의 [외부 연결] 탭에서 '고급 설정: 외부 중계 서버'를 열고 '중계 서버 주소'에
IP:포트를 입력합니다. [이 PC 사용]을 누르면 내장 연결로 돌아갑니다. - 중계 서버 주소는 휴대폰을 연결할 때 QR 코드에 담겨 전달됩니다. 중계 서버를 먼저 정한 뒤 휴대폰을 연결하십시오.
- 승인은 휴대폰의 하드웨어 보안 키로 서명되고, PC의 신원 키는 TPM에 보관됩니다. 연결하지 않았거나 등록을 삭제한 기기, 중간의 네트워크나 중계 서버는 승인을 만들어 낼 수 없습니다.
- PC는 휴대폰에 보낸 창과 지금 떠 있는 창이 똑같을 때만 버튼을 누릅니다.
- PC는 창을 읽을 때 비밀번호 입력란을 건너뜁니다. 진단 로그에는 프로그램 이름, 요청 내용, 키를 남기지 않습니다.
- 루팅했거나 부트로더를 푼 휴대폰에서도 승인 키는 하드웨어 안에서 만들어져 밖으로 나오지 않고, 서명할 때마다 하드웨어가 화면 잠금 인증을 확인합니다. PC는 이를 잠긴 휴대폰과 같은 방법으로 확인합니다.
- Windows의 SYSTEM 권한이나 커널이 이미 공격자에게 넘어간 PC는 지키지 못합니다. 루트 권한이 이미 공격자에게 넘어간 휴대폰도 마찬가지입니다.
- 부트로더를 푼 휴대폰은 남의 손에 들어가면 운영체제가 바뀔 수 있고, 하드웨어는 이를 구별하지 못합니다. 직접 풀지 않은 휴대폰은 연결하지 마십시오.
- 휴대폰이 연결되지 않을 때: PC 앱의 [PC 상태] 탭에서 '휴대폰 승인 켜짐'인지 확인하십시오. 집 안이라면 두 기기가 같은 공유기에 있는지, 집 네트워크가 '개인 네트워크'인지 확인하십시오. 집 밖이라면 [외부 연결] 탭에 외부 주소가 표시되는지, 포트포워딩이 이 PC의 현재 내부 주소를 가리키는지 확인하십시오.
- 알림이 오지 않을 때: 휴대폰의 [알림 시간] 탭에서 요청을 받을 시간과 휴대폰 승인이 켜져 있는지 확인하십시오.
- 진단 로그: PC는 [활동 기록] 탭의 [로그 폴더 열기]로
%ProgramData%\UACRemoteController-Logs\diagnostics.jsonl을 엽니다. 휴대폰은 [기록] 탭의 [진단 로그 공유]나 [진단 로그 파일로 저장]을 씁니다. 어느 쪽도 자동으로 올려 보내지 않습니다. - 제거: Windows 설정 > 앱에서 'UAC 원격 승인기'를 제거합니다. 서비스, 프로그램 파일, 방화벽 규칙은 지우고, 기록과 설정과 기기 연결 정보는 남깁니다.
한국어, English, Français, Deutsch, 日本語, 简体中文, 繁體中文, Español, Português (Brasil), Português (Portugal), العربية. 기본값은 시스템 언어이며 앱 설정의 '표시 언어'에서 바꿀 수 있습니다.
.node-version의 Node로 npm ci를 실행한 뒤, 로컬 개발 검사는 node tools/quality.mjs --extended로 실행합니다. Android Rust 대상 설치와 실제 기기 검증의 차이는 CI 문서를 참고하십시오.
SPDX-License-Identifier: GPL-2.0-or-later
This project is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
This project is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE for the GNU General Public License, version 2. Third-party material retains its own notices and license terms.