当前位置: 首页 > news >正文

【linux】

🧩 可选:设置开机自启(可选)

如果你希望每次重启后自动启动 VNC,可以创建一个 systemd 服务或写个脚本:

nano /root/startvnc.sh
内容:

#!/bin/bash
vncserver -kill :1 2>/dev/null
vncserver :1 -geometry 1280x720 -depth 24
然后:

chmod +x /root/startvnc.sh
以后只需运行:

/root/startvnc.sh

🧩 可选:让 VNC 随系统启动(开机自启)

如果你希望每次重启服务器后自动启动 VNC,可以创建一个 systemd 服务:

  1. 创建服务文件:
    nano /etc/systemd/system/vncserver.service
  2. 粘贴以下内容:
    [Unit]
    Description=Start TigerVNC Server at boot
    After=syslog.target network.target

[Service]
Type=forking
User=root
Group=root
WorkingDirectory=/root

PIDFile=/root/.vnc/%H:1.pid
ExecStartPre=-/usr/bin/vncserver -kill :1
ExecStart=/usr/bin/vncserver :1 -geometry 1280x720 -depth 24
ExecStop=/usr/bin/vncserver -kill :1

[Install]
WantedBy=multi-user.target
3. 启用并启动服务:
systemctl daemon-reload
systemctl enable vncserver
systemctl start vncserver

✅ 解决方案:不用 systemd,改用脚本 + crontab 自启动

既然不能用 systemctl,我们可以用更简单、兼容性更强的方法:

✅ 方法:使用 crontab 实现开机自启(推荐)

  1. 编辑 root 的 crontab:
    crontab -e

  2. 在文件末尾添加一行:
    @reboot /root/startvnc.sh
    ✅ @reboot 表示系统启动时自动执行这个脚本。

  3. 保存并退出:
    按 Ctrl + O → 回车 → Ctrl + X
    ✅ 验证是否生效:
    你可以手动测试一下脚本是否能正常运行:

/root/startvnc.sh
如果看到:

Killing Xtigervnc process ID … success!
New Xtigervnc server … on port 5901
✅ 说明脚本没问题,下次重启系统后会自动运行!

📌 补充:如果你在 Docker 容器中
你不能用 systemd,也不能用 @reboot(因为容器不是“系统”,没有“重启”概念)。

✅ 正确做法:
在启动容器时,直接运行你的 VNC 启动脚本:

docker run -d -p 5901:5901 --name myvnc your-image /root/startvnc.sh
或者在 Dockerfile 中设置:

CMD [“/root/startvnc.sh”]
这样每次容器启动,都会自动运行 VNC 服务。

🎯 总结:
问题 原因 解决方案
System has not been booted with systemd 你不在 systemd 系统中(如 Docker、Alpine、最小化系统) ✅ 改用 crontab @reboot 或容器启动命令

✅ 现在你已经:

✅ 配置好 VNC 服务;
✅ 写好启动脚本 /root/startvnc.sh;
✅ 用 crontab 实现了“开机自启”;
✅ 可以随时用 VNC 客户端连接 你的IP:5901;
🎉 你已经完成了所有关键配置!现在可以愉快地使用图形界面了!

如果连接后看到桌面,记得回来告诉我 👏
如果遇到黑屏、卡顿、无法连接等问题,也随时问我,我帮你一步步排查! 😊

root@760inpb4plcdq-0:/125090409# crontab -e
no crontab for root - using an empty one

Select an editor. To change later, run ‘select-editor’.

  1. /bin/nano <---- easiest
  2. /usr/bin/vim.basic

Choose 1-2 [1]:
你当前看到的是 crontab -e 的编辑器选择界面,这是系统在问你:“你想用哪个编辑器来编辑定时任务?”

✅ 推荐选择:1. /bin/nano(最简单、最适合新手)
👉 直接按键盘输入:
1 → 然后按 回车(Enter)

📝 接下来你会看到一个空白的 crontab 文件,像这样:

m h dom mon dow command

这是定时任务的格式说明。

✅ 在文件末尾添加这一行:
@reboot /root/startvnc.sh
✅ @reboot 表示系统启动时自动执行这个脚本。

📥 保存并退出:
按 Ctrl + O → 保存文件;
按 Enter → 确认保存;
按 Ctrl + X → 退出编辑器。
✅ 验证是否添加成功:
crontab -l
你会看到:

@reboot /root/startvnc.sh
✅ 说明定时任务已成功添加!

🚀 现在你可以:
重启系统(如果是真实服务器或虚拟机),VNC 会自动启动;
如果是 Docker 容器,记得在启动容器时运行 /root/startvnc.sh(因为容器没有“重启”概念);
用 VNC 客户端连接 你的IP:5901,输入密码,即可看到桌面!
🎉 你已经完成了所有关键配置!现在可以愉快地使用图形界面了!

如果连接后看到桌面,记得回来告诉我 👏
如果遇到黑屏、卡顿、无法连接等问题,也随时问我,我帮你一步步排查! 😊

Attachment Image
你当前在 nano 编辑器 中编辑 crontab 文件,这是你运行 crontab -e 后进入的界面。

✅ 你要做的操作:
在文件最后一行(或空白处)添加以下内容:

@reboot /root/startvnc.sh
📝 操作步骤:
移动光标到最后一行(可以用方向键或 Ctrl + V 翻页);
在最后一行下面输入:
@reboot /root/startvnc.sh
保存并退出:
按 Ctrl + O → 保存文件;
按 Enter → 确认保存;
按 Ctrl + X → 退出编辑器。
✅ 验证是否添加成功:
crontab -l
你会看到:

@reboot /root/startvnc.sh
✅ 说明定时任务已成功添加!

✅ 解决方案:让 VNC 服务监听所有网络接口(0.0.0.0)

🛠 方法一:临时解决(立即生效)
在服务器终端运行:

vncserver -kill :1
vncserver -localhost no :1 -geometry 1280x720 -depth 24
✅ -localhost no 表示允许外部连接。

🛠 方法二:永久解决(修改启动脚本)
编辑你的启动脚本 /root/startvnc.sh:

nano /root/startvnc.sh
修改内容为:

#!/bin/bash
vncserver -kill :1 2>/dev/null
vncserver -localhost no :1 -geometry 1280x720 -depth 24
✅ 关键是加了 -localhost no

然后保存并退出:

Ctrl + O → 回车 → Ctrl + X

✅ 太好了!你终于说出来了 —— 你在 Docker 上运行 VNC!

这解释了之前所有的“奇怪问题”:

❌ ufw 无法启用(Docker 容器没有完整内核支持);
❌ iptables 报错(容器内没有防火墙模块);
❌ “目标计算机积极拒绝”(因为 Docker 没有映射端口);
✅ netstat 显示 0.0.0.0:5901(服务在容器内运行正常);
❌ 但外部无法连接 —— 因为端口没映射!
🚀 解决方案:在启动容器时映射 5901 端口
你必须在 运行 docker run 命令时,加上 -p 5901:5901,这样外部才能访问容器内的 5901 端口。

✅ 正确的 Docker 启动命令:
docker run -d -p 5901:5901 --name myvnc your-image /root/startvnc.sh
🔁 如果你已经运行了容器,先删除旧容器,再重新启动:

docker stop myvnc
docker rm myvnc
docker run -d -p 5901:5901 --name myvnc your-image /root/startvnc.sh
📌 重要提示:
your-image 是你构建或拉取的镜像名称(比如 ubuntu-vnc、my-vnc-image 等);
如果你不知道镜像名,可以运行:
docker images
查看所有镜像。
🧪 验证端口是否映射成功:
在服务器终端运行:

docker ps
你会看到类似:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc123def456 your-image “/root/startvnc.sh” 5 minutes ago Up 5 minutes 0.0.0.0:5901->5901/tcp myvnc
✅ 0.0.0.0:5901->5901/tcp 表示端口映射成功!

🖥️ 现在你可以连接桌面了!
在你的 Windows 电脑上:

打开 TigerVNC Viewer;
输入:
10.31.26.222:5901
输入密码;
✅ 成功连接!你会看到 XFCE 桌面环境!
🛡️ 安全提醒:
由于你现在允许局域网连接,建议:
使用强密码;
不要开放 5901 端口到公网(除非必要);
或者使用 SSH 隧道 更安全:
ssh -L 5901:localhost:5901 root@10.31.26.222
然后在本地 VNC 客户端连接 localhost:5901。

🚨 现在我们进入“终极排查模式” —— 你可能在 特殊环境 中运行(比如 Docker、云服务器、最小化系统、或有安全策略限制)

✅ 终极解决方案:用 x11vnc 替代 tigervnc(更轻量、兼容性更强)

  1. 安装 x11vnc
    apt update && apt install -y x11vnc

  2. 创建一个 VNC 密码(如果还没设置)
    x11vnc -storepasswd /root/.vnc/passwd
    会提示你输入密码,确认后保存。

  3. 启动 x11vnc 服务(绑定到 0.0.0.0)
    x11vnc -display :1 -passwd /root/.vnc/passwd -localhost no -forever -shared -rfbport 5901
    ✅ -localhost no:允许外部连接
    ✅ -forever:保持运行
    ✅ -shared:允许多个客户端连接
    ✅ -rfbport 5901:指定端口

  4. 在 VNC 客户端连接:
    localhost:5901

127.0.0.1:5901
✅ 你应该能看到一个 轻量级桌面环境(可能是 xterm 或 xfce4,取决于你是否安装了桌面)。

🧪 如果你只想看到终端(最简模式),可以跳过桌面:
x11vnc -display :1 -passwd /root/.vnc/passwd -localhost no -forever -shared -rfbport 5901 -xstartup /usr/bin/xterm

http://www.jsqmd.com/news/253364/

相关文章:

  • 基于Python的高校毕业生招聘信息推荐系统设计与实现
  • 2026年转行网安到底行不行,网络安全有没有发展前途,零基础转行难不难?_网络安全失业人越来越多了
  • 网络安全检测实战指南:核心方法、工具选型与在安全运维中的关键应用
  • 首届“国家绿色算力设施”推广交流活动开幕在即
  • 【收藏】2026年AI大模型学习避坑指南+实操干货,小白/程序员快速入门
  • 【技术教程】前端UI组件库Shadcn/ui
  • 一文读懂计算机网络安全:核心要义、防护体系与实战资源清单
  • 基于FPGA的DS18B20温度监控与管理系统:实时显示温度,按键查看历史数据并存储温度点,超...
  • 奇灵·第八届AI短剧产业合作大会于1月9日深圳圆满落幕
  • 采购系统值不值得上?先看它能不能接住这几件日常工作
  • 现代攻防下的网络安全防护:关键技术演进与核心场景实战解析
  • 救命神器10个AI论文写作软件,助本科生搞定毕业论文!
  • Minimax大模型算法岗面试全攻略:从基础到进阶,收藏这份超详细面经
  • 基于SpringBoot与微信小程序的文化旅游小程序系统设计与实现
  • 前后端分离专辑鉴赏网站系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • AI大模型工程架构全解析:从零基础入门到实战精通,一篇就够了!
  • 云边协同架构下:分布式 IDC 集群温湿度远程运维监控方案
  • 收藏!程序员必看:5步转型AI大模型开发者,未来5年最值钱的技术路线
  • 虎贲等考 AI:重新定义智能学术写作,一站式攻克论文全流程难题
  • 计算机网络安全从入门到精通:核心概念、防护技术与学习路径全解析(附资料)
  • SpringBoot+Vue 学生评奖评优管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 改拉刚才这个需求,卡在开机log里,应该过滤什么关键字来看日志找原因?
  • Java版LeetCode热题100之「排序链表」详解
  • 构筑稳固防线:网络安全防护核心技术体系详解(从原理到最佳实践)
  • Java版LeetCode热题100之「LRU 缓存」详解
  • 学Simulink——基础微电网场景实例:基于Simulink的主从控制策略在微电网中的应用仿真
  • 基于SpringBoot与微信小程序的小区蔬菜水果商城系统设计与实现
  • 基于SpringBoot+Vue的创新创业教育中心项目申报管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 基于SpringBoot与微信小程序的智能瘦身小程序系统设计与实现
  • Python+Vue的 智慧居家养老个性化服务的设计与实现 django Pycharm flask