作为一名长期使用Linux和Windows双系统的开发者,我经常需要在Windows环境下远程访问Deepin桌面进行工作。经过多次实践和优化,我总结出一套稳定可靠的配置方案,使用xrdp+x11vnc组合实现无缝远程连接。下面将详细介绍完整配置流程和注意事项。
首先确保你的Deepin系统版本为15.11或更高(目前最新稳定版为20.6)。可以通过以下命令查看系统版本:
bash复制cat /etc/deepin-version
lsb_release -a
注意:不同版本的Deepin在软件包管理和桌面环境上可能有差异,本文方案主要针对基于Debian的Deepin 15.x/20.x系列。
即使我们主要使用RDP协议远程桌面,配置SSH服务仍然很有必要:
bash复制sudo apt-get update
sudo apt-get install -y openssh-server
配置SSH服务开机自启并检查状态:
bash复制sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh
验证SSH端口是否监听:
bash复制netstat -tulnp | grep 22
如果系统防火墙开启,需要放行SSH端口:
bash复制sudo ufw allow 22/tcp
x11vnc是Linux下常用的VNC服务器,可以将实际显示内容通过网络共享:
bash复制sudo apt install -y x11vnc
设置VNC访问密码(建议使用强密码):
bash复制x11vnc -storepasswd
执行后会提示输入并确认密码,生成的密码文件默认保存在~/.vnc/passwd。为方便系统级调用,我们将密码文件复制到/etc目录:
bash复制sudo cp ~/.vnc/passwd /etc/x11vnc.pass
sudo chmod 600 /etc/x11vnc.pass
创建服务配置文件/lib/systemd/system/x11vnc.service:
bash复制sudo nano /lib/systemd/system/x11vnc.service
写入以下内容(关键参数说明见注释):
ini复制[Unit]
Description=Start x11vnc at startup
After=display-manager.service # 确保在桌面环境加载后启动
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -forever -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared -o /var/log/x11vnc.log
# 参数说明:
# -forever 持续运行
# -rfbauth 指定密码文件
# -rfbport 监听端口
# -shared 允许多客户端连接
# -o 日志输出
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
启用并启动x11vnc服务:
bash复制sudo systemctl daemon-reload
sudo systemctl enable x11vnc
sudo systemctl start x11vnc
检查服务状态和端口监听:
bash复制sudo systemctl status x11vnc
netstat -tulnp | grep 5900
查看日志确认运行正常:
bash复制tail -f /var/log/x11vnc.log
xrdp是一个开源的RDP(远程桌面协议)服务器:
bash复制sudo apt install -y xrdp
安装后会自动创建自启服务,检查状态:
bash复制sudo systemctl status xrdp
默认配置下,xrdp会监听3389端口:
bash复制netstat -tulnp | grep 3389
编辑xrdp主配置文件:
bash复制sudo nano /etc/xrdp/xrdp.ini
建议修改以下参数:
ini复制port=3389
security_layer=negotiate
crypt_level=high
max_bpp=24
编辑sesman.ini配置会话管理:
bash复制sudo nano /etc/xrdp/sesman.ini
调整参数:
ini复制[Xorg]
param=-config
param=xrdp/xorg.conf
param=-nolisten
param=tcp
param=-logfile
param=.xorgxrdp.%s.log
如果系统启用防火墙,需要放行相关端口:
bash复制sudo ufw allow 3389/tcp
sudo ufw allow 5900/tcp
sudo ufw reload
为提高远程体验,可以在Windows端创建RDP快捷方式并添加参数:
code复制mstsc /v:your_deepin_ip /f /multimon /w:1920 /h:1080
参数说明:
问题1:连接后黑屏
解决方案:
bash复制sudo systemctl restart xrdp
问题2:认证失败
解决方案:
问题3:键盘映射错误
解决方案:
在xrdp登录界面选择正确的键盘布局,或编辑:
bash复制sudo nano /etc/xrdp/km-0409.ini
编辑xrdp端口:
bash复制sudo nano /etc/xrdp/xrdp.ini
修改:
ini复制port=3390
编辑x11vnc服务文件修改端口:
ini复制ExecStart=/usr/bin/x11vnc ... -rfbport 5901 ...
记得更新防火墙规则:
bash复制sudo ufw allow 3390/tcp
sudo ufw allow 5901/tcp
生成自签名证书:
bash复制sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/xrdp.key \
-out /etc/ssl/certs/xrdp.crt
配置xrdp使用SSL:
ini复制[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
ssl_protocols=TLSv1.2, TLSv1.3
certificate=/etc/ssl/certs/xrdp.crt
key_file=/etc/ssl/private/xrdp.key
配置独立的x11vnc实例:
bash复制sudo cp /lib/systemd/system/x11vnc.service /etc/systemd/system/x11vnc@.service
编辑模板服务文件:
ini复制[Service]
ExecStart=/usr/bin/x11vnc -forever -rfbauth /etc/x11vnc-%i.pass -rfbport 59%i -display :0
为不同用户创建密码文件并启动服务:
bash复制sudo x11vnc -storepasswd /etc/x11vnc-01.pass
sudo systemctl start x11vnc@01.service
在x11vnc参数中添加压缩选项:
ini复制ExecStart=/usr/bin/x11vnc ... -compresslevel 6 -quality 8 ...
xrdp端可以调整颜色深度:
ini复制max_bpp=16
编辑xrdp配置文件启用会话保持:
ini复制[Xorg]
param=-config
param=xrdp/xorg.conf
param=-nolisten
param=tcp
param=-logfile
param=.xorgxrdp.%s.log
param=-noreset
param=-keeptty
查看xrdp日志:
bash复制tail -f /var/log/xrdp.log
查看x11vnc日志:
bash复制journalctl -u x11vnc -f
设置日志轮转:
bash复制sudo nano /etc/logrotate.d/xrdp
添加内容:
code复制/var/log/xrdp.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 640 xrdp xrdp
}
经过以上完整配置,你应该可以获得一个稳定高效的Deepin远程桌面环境。这套方案在我的多台设备上已经稳定运行超过两年,无论是日常办公还是开发工作都能满足需求。