Linux 遠程管理分為字符界面 (SSH) 與圖形界面 (VNC/X11/RDP) 兩大體系。本文涵蓋 SSH 密鑰免密登錄、跳板機代理、VNC Server 系統級部署、桌面環境選擇、X11 轉發運行遠程 GUI 程序、xrdp 實現 Windows 遠程桌面直連 Linux、安全加固與性能調優。
# 客戶端生成
ssh-keygen -t ed25519 -C "admin@company" -f ~/.ssh/id_ed25519_admin
# 輸出: ~/.ssh/id_ed25519_admin (私鑰, 600), ~/.ssh/id_ed25519_admin.pub (公鑰)
# 分發公鑰至服務器
ssh-copy-id -i ~/.ssh/id_ed25519_admin.pub user@server
# 或手動
cat ~/.ssh/id_ed25519_admin.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Host prod-web
HostName 10.0.1.10
User ops
IdentityFile ~/.ssh/id_ed25519_admin
Port 2222
ForwardAgent yes # 代理轉發 (跳板機場景)
ServerAliveInterval 30
ServerAliveCountMax 3
Host bastion
HostName 203.0.113.5
User ops
IdentityFile ~/.ssh/id_ed25519_admin
Host prod-db
HostName 10.0.2.20
User ops
IdentityFile ~/.ssh/id_ed25519_admin
ProxyJump bastion # 透過跳板機直連內網 DB
# 老版本用: ProxyCommand ssh -W %h:%p bastion
Port 2222 # 修改默認端口
PermitRootLogin no # 禁用 root 登錄
PubkeyAuthentication yes # 僅允許密鑰認證
PasswordAuthentication no # 禁用密碼認證
ChallengeResponseAuthentication no
PermitEmptyPasswords no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers ops admin@10.0.0.0/8 # 白名單用戶/網段
# AllowGroups sshusers # 或基於組
Banner /etc/ssh/banner.txt # 登錄警告
LogLevel VERBOSE
# 重啟生效
systemctl reload sshd
# 安裝輕量級 XFCE (推薦) 或 GNOME
yum groupinstall -y "Xfce" "Fonts" # 或 "Server with GUI"
# yum install -y tigervnc-server
# 配置 VNC 服務 (用戶級 systemd)
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
sed -i 's//ops/' /etc/systemd/system/vncserver@:1.service
sed -i 's/-geometry 1024x768/-geometry 1920x1080 -depth 24/' /etc/systemd/system/vncserver@:1.service
# 設置 VNC 密碼 (以 ops 用戶)
su - ops
vncpasswd
# 輸入雙次密碼 (僅前 8 字符有效)
exit
# 啟動並開機自啟
systemctl daemon-reload
systemctl enable --now vncserver@:1.service
# 端口: 5901 (5900 + display號)
server_ip:1 或 server_ip:5901。ssh -L 5901:localhost:5901 user@server
# 本地連接 localhost:1
# 創建多用戶服務
cp /etc/systemd/system/vncserver@:1.service /etc/systemd/system/vncserver@:2.service
sed -i 's/ops/dev/' /etc/systemd/system/vncserver@:2.service
systemctl enable --now vncserver@:2.service
# 端口 5902
| 桌面環境 | 資源佔用 | 易用性 | 推薦場景 |
|---|---|---|---|
| XFCE | 極低 (~200MB RAM) | 優 | 服務器、低配 VPS、輕量管理 |
| MATE | 低 (~300MB) | 優 | GNOME 2 風格愛好者 |
| GNOME 3/40 | 高 (~1GB+) | 極佳 | 工作站、需現代 UI、Wayland 原生 |
| KDE Plasma | 中高 (~800MB) | 極佳 | 高度定製、Qt 應用開發 |
# 服務端 /etc/ssh/sshd_config
X11Forwarding yes
X11UseLocalhost no # 允許綁定所有接口 (配合防火牆)
# 重啟 sshd
# 客戶端連接
ssh -X user@server # 可信轉發 (需 xauth)
ssh -Y user@server # 完全信任 (繞過 SECURITY extension)
# 遠程運行圖形程序
xeyes &
firefox &
virt-viewer &
# 窗口顯示在本地桌面,渲染在遠程 GPU/CPU
Windows 客戶端:安裝 VcXsrv (X Server) 或 X410 (商業),設置 DISPLAY=localhost:0,勾選 "Disable access control",SSH 客戶端 (MobaXterm/Termius/PuTTY+Xming) 開啟 X11 Forwarding。
yum install -y epel-release
yum install -y xrdp xorgxrdp # xorgxrdp 提供原生 Xorg 後端性能最佳
systemctl enable --now xrdp
firewall-cmd --permanent --add-port=3389/tcp
firewall-cmd --reload
# SELinux 策略 (如啟用)
chcon --type=bin_t /usr/sbin/xrdp
chcon --type=bin_t /usr/sbin/xrdp-sesman
setsebool -P allow_execmem on
xrdp-vr 模組)。xfreerdp /v:server /u:user)。| 需求 | 推薦方案 | 關鍵優勢 |
|---|---|---|
| 日常命令行管理、自動化腳本、Git 操作 | SSH 密鑰認證 | 輕量、無處不在、可腳本化、跳板機代理 |
| 需要完整桌面環境 (瀏覽器、IDE、圖形配置工具) | VNC + SSH 隧道 | 跨平台、多用戶並發、桌面環境自由選擇 |
| 僅需運行單個圖形程序 (Wireshark、Virt-Manager、矩陣計算視覺化) | SSH X11 Forwarding | 零額外服務、本地窗口管理、低帶寬 |
| Windows 用戶習慣 RDP、需聲音/剪貼板/驅動器重定向 | xrdp (Xorg 後端) | 原生 mstsc 體驗、性能接近 VNC、企業環境友好 |
pam_faillock)。-geometry 1920x1080 -depth 24 -compresslevel 6。use_vsock=true (Hyper-V/WSL2 虛擬化場景極低延遲)。/var/log/secure、journalctl -u sshd/xrdp/vncserver@*。