간단한 원격 편집 작업
기존 VNC 데스크톱에 연결하여 빈 문서에 짧은 문장을 입력하고 새 스크린샷으로 확인합니다. rdp-cli 0.1.0과 2026년 9월의 기존 검증 기록을 바탕으로 하며 새 테스트를 실행했다는 뜻은 아닙니다. 9월 20일 Mac 검증은 실제 Ubuntu 24.04 / TigerVNC 1.13.1과 xterm을 사용했고, 후속 Linux 검증은 인증된 TigerVNC도 다뤘습니다. 아래 문구는 교육용 예제이며 당시 세션을 그대로 재생하지 않습니다.
서버와 클라이언트 준비
알맞은 버전을 다운로드하고 빠른 시작의 플랫폼 설정을 따릅니다. 원격 컴퓨터에 접근 가능한 VNC 서버가 이미 있어야 하며 보기와 제어 권한이 필요합니다. 원격 텍스트 편집기에서 빈 문서를 준비하세요. rdp-cli는 서버를 설치하거나 AI 모델을 제공하지 않습니다.
VNC 기본 포트는 5900이고 기본 인증은 비밀번호 방식입니다. 지원되는 보안 방식은 데스크톱 전송을 암호화하지 않으므로 신뢰할 수 있는 네트워크나 VPN을 사용합니다. 전통적인 VNC 인증은 비밀번호의 처음 8개 UTF-8 바이트만 사용합니다. RDP 전용 --user, --domain, 디스플레이 배치 또는 인증서 옵션을 넣지 마세요.
VNC를 명시하여 연결
예제 주소와 포트를 바꿉니다. macOS와 Linux에서는 Bash에서 실행하며 Mac은 먼저 bash를 시작할 수 있습니다. Linux에서는 rdp-cli를 설치된 명령이나 해당 아키텍처의 실행 파일 경로로 바꿉니다.
IFS= read -r -s -p 'Password: ' vnc_password
printf '\n'
printf '%s' "$vnc_password" | rdp-cli connect --protocol vnc --host 192.0.2.20 --port 5900 --password-stdin
unset vnc_password
Windows에서는 EXE 폴더의 PowerShell을 사용합니다.
$secret = Read-Host 'Password' -AsSecureString
$savedEncoding = $OutputEncoding
try {
$OutputEncoding = [System.Text.UTF8Encoding]::new($false)
[System.Net.NetworkCredential]::new('', $secret).Password |
.\rdp-cli.exe connect --protocol vnc --host 192.0.2.20 --port 5900 --password-stdin
} finally {
$OutputEncoding = $savedEncoding
$secret.Dispose()
}
JSON을 읽고 data.session을 SESSION으로 저장하며 ok와 필요한 경우 error.code를 확인합니다. 연결 실패를 이유로 인증 방식을 조용히 바꾸면 안 됩니다. --vnc-security none은 인증 없이 설정된 서버에만 명시적으로 사용하며 비밀번호 소스와 함께 지정하지 않습니다. 저장된 --credential-ref는 --password-stdin의 대안이지 추가 비밀번호 소스가 아닙니다.
관찰하고 입력한 뒤 재확인
이후 Windows 명령은 rdp-cli 대신 .\rdp-cli.exe를 쓰고, Linux는 올바른 실행 파일 경로를 유지합니다.
rdp-cli status --session SESSION
rdp-cli screenshot --session SESSION --out vnc-before.png
vnc-before.png를 읽어 대상 데스크톱과 편집기를 확인하고 스크린샷 응답의 data.observation을 OBSERVATION으로 저장합니다. 상태 응답에서 프로토콜, 연결, 제어 상태를 확인하세요. 현재 화면에서 문서의 실제 원격 좌표를 골라 X, Y에 넣습니다.
rdp-cli click --session SESSION --desktop --x X --y Y --observation OBSERVATION
rdp-cli screenshot --session SESSION --out vnc-focused.png
vnc-focused.png를 읽어 포커스를 확인하고, 이 응답의 data.observation을 NEW_OBSERVATION으로 사용합니다.
rdp-cli type --session SESSION --text "VNC command check" --observation NEW_OBSERVATION
rdp-cli screenshot --session SESSION --out vnc-after.png
vnc-after.png에서 “VNC command check”가 대상 문서에 정확하게 나타났는지 확인합니다. 입력 전송 성공이 앱의 수락을 증명하지는 않습니다. 예제 좌표를 그대로 쓰거나 크기 변경, 재연결, 제어 상태 변경 후 오래된 토큰을 재사용하지 마세요.
필요할 때 보기와 복구
로컬 뷰어는 선택 사항입니다. 사람이 같은 세션을 보려면 다음을 실행합니다.
rdp-cli watch --session SESSION --viewer window
처음에는 읽기 전용입니다. 일시 중지, 제어권 가져오기와 반환은 명시적 동작이며, 사람이 제어하거나 입력이 중지된 동안 Agent는 입력을 멈춰야 합니다. 재연결과 서버 크기 변경은 관찰을 무효화하고 제어를 일시 중지 상태로 둡니다. 허가된 재개 전에 새 화면을 확인하세요.
연결 실패 시 주소, 포트, 인증과 네트워크를 확인하고 비밀번호를 반복하기보다 오류를 읽습니다. 글자가 다르면 포커스, 원격 키보드 배열과 입력기를 확인한 뒤 새 화면을 봅니다. VNC Unicode 이벤트가 모든 서버와 앱의 모든 문자 입력을 보장하지는 않습니다. 입력 결과가 불확실하면 화면과 원래 작업 상태를 확인한 후 재시도합니다.
VNC 기능 제한
공통 스크린샷, 입력, 보기 흐름을 쓸 수 있지만 교환 드라이브 파일, 소리, 마이크, 클라이언트가 요청하는 화면 배치는 지원하지 않으며 관련 작업은 CAPABILITY_UNAVAILABLE을 반환합니다. UTF-8 클립보드는 clipboard_utf8 협상이 필요하고 그렇지 않으면 Latin-1만 지원합니다. 뷰어를 열어도 없는 프로토콜 기능이 생기지 않습니다.