Linux 실행 파일에서 원격 화면까지

rdp-cli를 다운로드하고 Windows RDP에 연결하여 실제 데스크톱을 확인합니다. 버전 0.1.0에 관한 기존 출시 증거를 사용합니다. Linux x86_64 빌드 2026092203은 10개 시스템, ARM64 빌드 2026092301은 Raspberry Pi 4와 DGX Spark를 포함한 12개 환경의 소프트웨어 검증을 통과했습니다. 이 글은 새 테스트나 모든 Linux 배포판에 대한 검증을 주장하지 않습니다.

아키텍처 선택과 파일 검증

rdp-cli를 실행할 Linux 컴퓨터에서 확인합니다.

uname -m

x86_64이면 다운로드 페이지에서 Linux x86_64, aarch64이면 Linux ARM64를 선택합니다. ARM CPU라도 32비트 OS는 이 ARM64 버전 범위 밖입니다. macOS를 실행하는 Mac에는 macOS 패키지가 필요합니다. 실행에는 실행 파일만 있으면 되며 별도 소스 및 라이선스 자료는 필수 부속 파일이 아닙니다.

실행 전에 SHA-256 출력을 다운로드 페이지의 같은 아키텍처 파일 정보와 비교합니다. x86_64:

sha256sum ./rdp-cli-linux-x86_64

해시가 일치하는지 확인한 뒤 실행 권한을 부여하고 버전을 확인합니다.

chmod u+x ./rdp-cli-linux-x86_64
./rdp-cli-linux-x86_64 --version

ARM64:

sha256sum ./rdp-cli-linux-arm64

해시가 일치하는지 확인한 뒤 실행 권한을 부여하고 버전을 확인합니다.

chmod u+x ./rdp-cli-linux-arm64
./rdp-cli-linux-arm64 --version

--version은 JSON 버전 정보를 반환해야 합니다. 단일 정적 ELF이므로 일반 사용자로 실행할 수 있고 관리자 설치가 필요하지 않습니다. 네이티브 뷰어는 현재 데스크톱의 디스플레이 서비스를 사용합니다. 검증 범위를 모든 데스크톱, 커널과 오디오 장치로 확대해서는 안 됩니다.

Bash에서 연결

Windows에 RDP가 이미 활성화되어 있고 계정에 원격 로그인 권한이 있으며 이 Linux 컴퓨터에서 지정한 네트워크나 VPN으로 접근할 수 있어야 합니다. 클라이언트 설치가 Windows 서비스를 켜주지는 않습니다.

실행 파일 디렉터리에서 Bash로 실행합니다. ARM64에서는 첫 줄을 rdp_cli=./rdp-cli-linux-arm64로 바꿉니다. 192.0.2.20USER를 허가된 대상과 계정으로 바꾸세요. 입력한 비밀번호는 표시되지 않습니다.

rdp_cli=./rdp-cli-linux-x86_64
IFS= read -r -s -p 'Password: ' rdp_password
printf '\n'
printf '%s' "$rdp_password" | "$rdp_cli" connect --host 192.0.2.20 --user USER --password-stdin
unset rdp_password

계속 같은 셸을 사용하여 rdp_cli 변수를 유지합니다. 파이프는 비밀번호를 보낸 뒤 표준 입력을 닫습니다. 도메인 계정에는 --domain DOMAIN을 추가할 수 있으며 여러 비밀번호 소스를 함께 쓰면 안 됩니다. 현재 RDP 기본값은 --cert-policy ignore이므로 connect --help를 읽고 환경에 맞는 인증서 검증을 설정하세요. 인증서 정책으로 네트워크 단절이나 잘못된 자격 증명을 해결할 수는 없습니다.

JSON을 읽습니다. 실패 시 error.code, error.message를 확인하고, 성공 시 반환된 data.sessionSESSION으로 저장합니다.

상태와 첫 PNG 확인

"$rdp_cli" status --session SESSION
"$rdp_cli" screenshot --session SESSION --out first-screen.png

연결과 제어 상태를 확인합니다. 이미지 도구로 first-screen.png를 열어 실제 화면을 확인한 후 다음 작업을 결정하세요. 연결되어도 로그인, 환영 화면이나 처리 중인 앱이 보일 수 있습니다. 해당 화면에 기반한 후속 입력을 위해 응답의 data.observation을 저장합니다. 이것은 영구 세션 ID가 아닙니다.

스크린샷과 입력 명령에는 로컬 창이 필수가 아닙니다. 사람이 Linux 데스크톱에서 같은 세션을 보려면 다음을 실행합니다.

"$rdp_cli" watch --session SESSION --viewer window

창은 읽기 전용으로 시작하며 사람의 제어권 획득은 명시적으로 이뤄집니다. 읽기 전용 뷰어를 닫아도 연결은 유지됩니다. 제어권을 가진 뷰어가 사라지면 입력은 일시 중지 상태가 됩니다. 재연결이나 제어권 반환 후 새 화면을 확인하고 제어 상태를 따르세요.

구체적인 오류 해결

  • 실행 형식이 맞지 않음: uname -m과 다운로드 아키텍처를 비교합니다. x86_64와 ARM64 파일은 서로 바꿔 쓸 수 없습니다.
  • 권한 거부: 실행 비트와 파일시스템의 실행 허용 여부를 확인합니다. 알맞은 사용자 디렉터리를 선택하고 관리자 권한으로 대체하지 마세요.
  • 연결 또는 인증 오류: 경로, 포트, Windows RDP 서비스, 계정 권한과 반환 오류를 확인합니다. 비밀번호를 반복하거나 무관한 오류 때문에 구형 TLS를 켜지 마세요.
  • 데스크톱 없이 SDL_INIT_FAILED: 네이티브 뷰어에는 디스플레이 세션이 필요하지만 헤드리스 CLI 스크린샷은 사용할 수 있습니다. 뷰어 오류만으로 RDP 실패를 단정하지 마세요.
  • CREDENTIAL_STORE_FAILED: 저장된 자격 증명은 호스트의 Secret Service를 사용합니다. 없으면 --password-stdin 같은 적절한 지원 소스를 쓰고 저장이 성공했다고 표시하지 않습니다.

빠른 시작, 명령 참조, RDP 파일 업로드와 다운로드로 이어갈 수 있습니다. 파일 교환에는 서버 드라이브 리디렉션과 파일 권한도 필요합니다.