✨ 주요 기능: - Proxmox VE 호스트 부팅 시 자동 RDP 연결 - 완전 자동화된 설정 스크립트 - 강화된 입력 검증 및 에러 처리 - 네트워크 연결 테스트 - 자동 백업 및 복구 기능 - 사용자 친화적 컬러 출력 🛠️ 기술 스택: - Bash Shell Script - systemd (자동 로그인) - X Window System + Openbox - FreeRDP3 (RDP 클라이언트) 🔧 주요 구성: - proxmox-auto-rdp-setup.sh: 메인 설치 스크립트 - proxmox_auto_rdp_setup_korean.md: 상세 한글 문서 - README.md: 프로젝트 개요 및 사용법 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
212 lines
5.6 KiB
Markdown
212 lines
5.6 KiB
Markdown
# Proxmox 9.0 자동 RDP 연결 설정 가이드
|
|
|
|
## 개요
|
|
Proxmox VE 9.0 (Debian 13 기반) 호스트가 부팅될 때 자동으로 Windows VM에 RDP로 풀스크린 연결하는 설정 가이드입니다.
|
|
|
|
**목표**: CLI 화면을 보지 않고 부팅 후 바로 RDP 화면이 풀스크린으로 표시
|
|
|
|
## 환경 정보
|
|
- **OS**: Proxmox VE 9.0.5 (Debian 13 기반)
|
|
- **RDP 대상**: ysleadersos.com:6642
|
|
- **인증정보**: doctor-03 / @flejtm301
|
|
|
|
## 전체 설정 과정
|
|
|
|
### 1단계: 필수 패키지 설치
|
|
|
|
```bash
|
|
# X 윈도우 시스템 및 관련 패키지 설치
|
|
apt update
|
|
apt install -y xorg openbox unclutter freerdp3-x11
|
|
|
|
# 설치된 패키지 확인
|
|
dpkg -l | grep -E "(xorg|openbox|freerdp)"
|
|
```
|
|
|
|
### 2단계: 사용자 계정 생성 및 설정
|
|
|
|
```bash
|
|
# rdpuser 계정 생성 (이미 존재한다면 건너뛰기)
|
|
useradd -m -s /bin/bash rdpuser
|
|
passwd rdpuser
|
|
|
|
# 사용자 홈 디렉토리 권한 설정
|
|
chown -R rdpuser:rdpuser /home/rdpuser
|
|
```
|
|
|
|
### 3단계: systemd 자동 로그인 설정
|
|
|
|
```bash
|
|
# getty@tty1 서비스 override 디렉토리 생성
|
|
mkdir -p /etc/systemd/system/getty@tty1.service.d
|
|
|
|
# override.conf 파일 생성
|
|
cat > /etc/systemd/system/getty@tty1.service.d/override.conf << 'EOF'
|
|
[Service]
|
|
ExecStart=
|
|
ExecStart=-/sbin/agetty --autologin rdpuser --noclear %I $TERM
|
|
Type=idle
|
|
EOF
|
|
|
|
# systemd 설정 리로드
|
|
systemctl daemon-reload
|
|
systemctl restart getty@tty1.service
|
|
```
|
|
|
|
### 4단계: 자동 X 시작 설정
|
|
|
|
```bash
|
|
# rdpuser의 .bash_profile 생성
|
|
cat > /home/rdpuser/.bash_profile << 'EOF'
|
|
# tty1에서만 X 자동 시작
|
|
if [[ -z $DISPLAY ]] && [[ $(tty) == /dev/tty1 ]]; then
|
|
startx
|
|
logout
|
|
fi
|
|
EOF
|
|
|
|
# 파일 소유권 설정
|
|
chown rdpuser:rdpuser /home/rdpuser/.bash_profile
|
|
```
|
|
|
|
### 5단계: X 세션 설정 (.xinitrc)
|
|
|
|
```bash
|
|
# .xinitrc 파일 생성
|
|
cat > /home/rdpuser/.xinitrc << 'EOF'
|
|
#!/bin/bash
|
|
|
|
# 화면 절전 모드 비활성화
|
|
xset -dpms
|
|
xset s off
|
|
xset s noblank
|
|
|
|
# 마우스 커서 숨기기
|
|
unclutter -idle 0.1 -root &
|
|
|
|
# Openbox 윈도우 매니저 시작
|
|
openbox-session &
|
|
|
|
# 잠시 대기 (X 완전 초기화)
|
|
sleep 2
|
|
|
|
# FreeRDP3를 사용한 직접 RDP 연결 (풀스크린)
|
|
xfreerdp3 \
|
|
/v:ysleadersos.com:6642 \
|
|
/u:doctor-03 \
|
|
/p:"@flejtm301" \
|
|
+f \
|
|
/cert:ignore \
|
|
+dynamic-resolution \
|
|
/sound:sys:alsa \
|
|
+clipboard
|
|
|
|
# RDP 종료 시 X 세션도 종료
|
|
pkill -SIGTERM Xorg
|
|
EOF
|
|
|
|
# 실행 권한 및 소유권 설정
|
|
chmod +x /home/rdpuser/.xinitrc
|
|
chown rdpuser:rdpuser /home/rdpuser/.xinitrc
|
|
```
|
|
|
|
### 6단계: Openbox 설정 (풀스크린 최적화)
|
|
|
|
```bash
|
|
# Openbox 설정 디렉토리 생성
|
|
mkdir -p /home/rdpuser/.config/openbox
|
|
|
|
# rc.xml 설정 파일 생성 (윈도우 장식 제거, 풀스크린 강제)
|
|
cat > /home/rdpuser/.config/openbox/rc.xml << 'EOF'
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<openbox_config xmlns="http://openbox.org/3.4/rc">
|
|
<applications>
|
|
<application class="*">
|
|
<decor>no</decor>
|
|
<maximized>yes</maximized>
|
|
</application>
|
|
</applications>
|
|
</openbox_config>
|
|
EOF
|
|
|
|
# 디렉토리 및 파일 소유권 설정
|
|
chown -R rdpuser:rdpuser /home/rdpuser/.config
|
|
```
|
|
|
|
## 주요 문제 해결 과정
|
|
|
|
### 문제 1: 초기 Remmina 사용 시 연결 실패
|
|
- **증상**: 부팅 후 화면 깜빡임, RDP 연결되지 않음
|
|
- **원인**: Remmina가 자동 실행 환경에서 불안정
|
|
- **해결**: Remmina를 FreeRDP3로 교체
|
|
|
|
### 문제 2: .bash_profile의 exec startx 문제
|
|
- **증상**: 로그인/로그아웃 반복 루프
|
|
- **원인**: `exec startx`로 인한 세션 교체 문제
|
|
- **해결**: `exec startx`를 `startx`로 변경하고 `logout` 추가
|
|
|
|
### 문제 3: FreeRDP3 명령어 문법 오류
|
|
- **증상**: "Unexpected keyword" 오류
|
|
- **해결**: 올바른 FreeRDP3 문법 적용
|
|
- `/cert-ignore` → `/cert:ignore`
|
|
- `/f` → `+f`
|
|
- `/dynamic-resolution` → `+dynamic-resolution`
|
|
- `/clipboard` → `+clipboard`
|
|
|
|
## 설정 파일 요약
|
|
|
|
### 핵심 설정 파일들:
|
|
1. `/etc/systemd/system/getty@tty1.service.d/override.conf` - 자동 로그인
|
|
2. `/home/rdpuser/.bash_profile` - X 자동 시작
|
|
3. `/home/rdpuser/.xinitrc` - RDP 연결 실행
|
|
4. `/home/rdpuser/.config/openbox/rc.xml` - 풀스크린 최적화
|
|
|
|
## 동작 흐름
|
|
|
|
1. **부팅 완료** → systemd가 tty1에서 rdpuser 자동 로그인
|
|
2. **로그인** → .bash_profile이 tty1에서 startx 실행
|
|
3. **X 시작** → .xinitrc가 실행됨
|
|
4. **Openbox 실행** → 윈도우 매니저 시작
|
|
5. **FreeRDP3 실행** → 풀스크린 RDP 연결
|
|
6. **RDP 종료시** → X 세션도 함께 종료
|
|
|
|
## 테스트 및 확인
|
|
|
|
### 설정 확인 명령어:
|
|
```bash
|
|
# 자동 로그인 서비스 상태 확인
|
|
systemctl status getty@tty1.service
|
|
|
|
# X 서버 실행 확인
|
|
ps aux | grep Xorg
|
|
|
|
# RDP 연결 테스트 (수동)
|
|
su - rdpuser -c "DISPLAY=:0 xfreerdp3 /v:ysleadersos.com:6642 /u:doctor-03 /p:'@flejtm301' +f /cert:ignore"
|
|
```
|
|
|
|
### 로그 확인:
|
|
```bash
|
|
# systemd 로그 확인
|
|
journalctl -u getty@tty1.service -f
|
|
|
|
# X 서버 로그 확인
|
|
cat /home/rdpuser/.local/share/xorg/Xorg.0.log
|
|
```
|
|
|
|
## 최종 결과
|
|
|
|
설정 완료 후 Proxmox 호스트를 재부팅하면:
|
|
- ✅ CLI 화면을 보지 않고 바로 RDP 화면이 표시됨
|
|
- ✅ 풀스크린 모드로 Windows VM에 자동 연결
|
|
- ✅ 사용자 개입 없이 완전 자동화된 부팅-RDP 연결
|
|
|
|
## 주의사항
|
|
|
|
1. **보안**: 패스워드가 설정 파일에 평문으로 저장됨 (운영 환경에서는 보안 강화 필요)
|
|
2. **네트워크**: RDP 대상 서버가 접근 가능한 상태여야 함
|
|
3. **백업**: 설정 변경 전 기존 설정 백업 권장
|
|
4. **권한**: 모든 설정 파일의 소유권이 rdpuser로 설정되어야 함
|
|
|
|
---
|
|
*생성일: 2025-08-24*
|
|
*작성자: Claude Code Assistant* |