mac连接lniux服务器教学笔记

news2025/5/9 13:34:24

从你的检查结果看,容器内已经安装了 XFCE 桌面环境xfce.desktopxubuntu.desktop 的存在说明桌面环境已存在)。以下是针对 Docker 容器环境的远程桌面配置方案:


一、容器内快速配置远程桌面(XFCE + VNC)

1. 安装必要组件
# 更新包列表并安装 VNC 服务器和 XFCE 工具
apt update && apt install -y tigervnc-standalone-server xfce4-terminal xfce4-good-extras
2. 设置 VNC 密码
vncpasswd  # 输入两次密码(建议设置简单密码用于测试)
3. 配置 VNC 启动脚本
# 创建 VNC 启动文件
mkdir -p ~/.vnc
echo '#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &' > ~/.vnc/xstartup

# 赋予执行权限
chmod +x ~/.vnc/xstartup
4. 启动 VNC 服务
vncserver :1 -geometry 1280x720 -depth 24 -localhost no
  • :1 表示显示编号1(对应端口 5901
  • -localhost no 允许外部访问(仅限测试环境!)
5. 查看运行状态
ss -tuln | grep 5901  # 确认端口监听
ps aux | grep vnc     # 查看进程

在这里插入图片描述


二、从 Mac 连接容器 VNC

1. 确保容器端口映射正确
  • 如果容器是临时启动的,需在 docker run 时添加端口映射:
docker run -it -p 5901:5901 your_image_name
  • 如果容器已存在,需重新提交镜像并运行:
docker commit fcfdbfd953f0 xfce_vnc  # 提交当前容器为新镜像
docker run -it -p 5901:5901 xfce_vnc
2.1在 Mac 上使用 VNC 客户端:
  • 打开 Finder → 应用程序 → 屏幕共享(或使用 TigerVNC)
  • 地址栏输入:宿主机IP:5901 输入 VNC
    密码(首次启动时会提示设置密码)
2. 2使用 VNC 客户端连接
  • 下载 VNC Viewer(https://www.realvnc.com/en/connect/download/viewer/)
  • 输入地址:服务器IP:5901容器宿主机IP:5901
  • 输入步骤2中设置的密码
3. 连接效果
  • 如果成功,会看到 XFCE 桌面,终端位于 xfce4-terminal
  • 如果黑屏,尝试重启 VNC:
    vncserver -kill :1 && vncserver :1
    

三、安全优化(必做)

1. 通过 SSH 隧道加密

直接暴露 VNC 端口不安全,建议在 Mac 本地执行:

ssh -L 5901:localhost:5901 user@宿主机IP

然后连接 VNC 地址为 localhost:5901

2. 容器内防火墙(如有)

如果容器内安装了 ufw

ufw allow 5901/tcp

四、持久化配置

1. 创建 Dockerfile
FROM your_base_image  # 原容器的基础镜像
RUN apt update && apt install -y tigervnc-standalone-server xfce4-terminal
RUN mkdir -p /root/.vnc && echo "startxfce4 &" > /root/.vnc/xstartup
RUN chmod +x /root/.vnc/xstartup
EXPOSE 5901
CMD ["vncserver", ":1", "-geometry", "1280x720", "-depth", "24", "-localhost", "no"]
2. 构建并运行镜像
docker build -t xfce_vnc .
docker run -it -p 5901:5901 xfce_vnc

五、替代方案:浏览器访问(无需客户端)

1. 安装 novnc
apt install -y websockify novnc
websockify --web /usr/share/novnc 8080 localhost:5901
2. 访问地址
  • 浏览器打开 http://宿主机IP:8080/vnc.html
  • 输入密码即可(需映射容器8080端口)

六、常见问题

1. VNC 连接后灰屏/无响应
  • 确保 ~/.vnc/xstartup 内容正确(必须包含 startxfce4 &)。
  • 检查依赖是否完整:
    apt install -y --fix-missing xfce4-panel xfdesktop4
    
2. Mac 端提示协议错误
  • 在 VNC Viewer 设置中启用 Legacy Encoding
  • 或改用 RealVNC 客户端。

总结

你的容器已具备 XFCE 桌面能力,按上述步骤配置 VNC 后即可从 Mac 远程访问。如果是生产环境,强烈建议通过 SSH 隧道加密流量。如果需要进一步简化流程,可以使用预装 VNC 的 Docker 镜像(如 danielguerra/ubuntu-xfce-vnc)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阀门产业发展方向报告(石油化工阀门应用技术交流大会)

本文大部分内容来自中国通用机械工业协会副会长张宗列在“2024全国石油化工阀门应用技术交流大会”上发表的报告。 一、国外阀门产业发展 从全球阀门市场分布看,亚洲是最大的工业阀门市场,美洲是全球第二大工业阀门市场,欧洲位列第三。 从国…

Windows Server 2025 安装AMD显卡驱动

运行显卡驱动安装程序,会提示出问题。但是此时资源已经解压 来到驱动路径 C:\AMD\AMD-Software-Installer\Packages\Drivers\Display\WT6A_INF 打开配置文件,把这两行替换掉 %ATI% ATI.Mfg, NTamd64.10.0...16299, NTamd64.10.0, NTamd64.6.0, NTamd64.…

用 CodyBuddy 帮我写自动化运维脚本

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”。 #CodeBuddy首席试玩官 背景 我个人是非常喜欢 Jenkins 自动化部署工具的,之前都是手写 Jenki…

USB集线器芯片革新之战:CH334U如何以工业级性能重新定义HUB控制器

一、当工业智能化遭遇接口瓶颈 在智能制造与边缘计算蓬勃发展的今天,工程师们正面临一个看似微小却至关重要的挑战——如何让USB集线器在极端工况下保持稳定?传统HUB控制器在-20℃以下频繁出现信号失真,产线突然断电导致的静电击穿更是让设备…

基于 Spring Boot 瑞吉外卖系统开发(十)

基于 Spring Boot 瑞吉外卖系统开发(十) 修改菜品 修改菜品是在原有的菜品信息的上对菜品信息进行更新,对此修改菜品信息之前需要将原有的菜品信息在修改界面进行展示,然后再对菜品信息进行修改。 修改菜品分为回显菜品信息和更…

C++ 与 Lua 联合编程

在软件开发的广阔天地里,不同编程语言各有所长。C 以其卓越的性能、强大的功能和对硬件的直接操控能力,在系统开发、游戏引擎、服务器等底层领域占据重要地位,但c编写的程序需要编译,这往往是一个耗时操作,特别对于大型…

Linux系统(OpenEuler22.03-LTS)部署FastGPT

在 openEuler 22.03 LTS 系统上通过 Docker Compose 安装 FastGPT 的步骤如下: 官方参考文档:https://doc.fastgpt.cn/docs/development/docker/ 1. 安装 Docker 和 Docker Compose 可以参考我之前离线安装Docker的文章:openEuler 22.03 LT…

Kubernetes控制平面组件:Controller Manager 之 内置Controller详解

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…

结合Splash与Scrapy:高效爬取动态JavaScript网站

在当今的Web开发中,JavaScript的广泛应用使得许多网站的内容无法通过传统的请求-响应模式直接获取。为了解决这个问题,Scrapy开发者经常需要集成像Splash这样的JavaScript渲染引擎。本文将详细介绍Splash JS引擎的工作原理,并探讨如何将其与S…

用于构建安全AI代理的开源防护系统

大家读完觉得有帮助记得及时关注!!! 大型语言模型(LLMs)已经从简单的聊天机器人演变为能够执行复杂任务的自主代理,例如编辑生产代码、编排工作流程以及基于不受信任的输入(如网页和电子邮件&am…

克里金模型+多目标优化+多属性决策!Kriging+NSGAII+熵权TOPSIS!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 克里金模型多目标优化多属性决策!KrigingNSGAII熵权TOPSIS!!matlab2023b语言运行! 1.克里金模型(Kriging Model)是一种基于空间统计学的插值方法…

LLM 论文精读(三)Demystifying Long Chain-of-Thought Reasoning in LLMs

这是一篇2025年发表在arxiv中的LLM领域论文,主要描述了长思维链 Long Chain-of-Thought 对LLM的影响,以及其可能的生成机制。通过大量的消融实验证明了以下几点: 与shot CoT 相比,long CoT 的 SFT 可以扩展到更高的性能上限&…

【Prompt工程—文生图】案例大全

目录 一、人物绘图 二、卡通头像 三、风景图 四、logo设计图 五、动物形象图 六、室内设计图 七、动漫风格 八、二次元图 九、日常场景图 十、古风神化图 十一、游戏场景图 十二、电影大片质感 本文主要介绍了12种不同类型的文生图技巧,通过加入不同的图像…

rust程序静态编译的两种方法总结

1. 概述 经过我的探索,总结了两种rust程序静态编译的方法,理论上两种方法都适用于windows、mac os和linux(mac os未验证),实测方法一性能比方法二好,现总结如下,希望能够帮到你. 2.方法一 2.1 添加配置文件 在项目的同级文件夹下新…

【Linux系列】目录大小查看

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

2048游戏(含Python源码)

前言 相关参考游戏: 像素飞机大战(含Python源码)-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/147693018?spm1001.2014.3001.5501使用DeepSeek定制Python小游戏——以“俄罗斯方块”为例-CSDN博客https://blog.csdn.n…

中间件-RocketMQ

RocketMQ 基本架构消息模型消费者消费消息模式顺序消息机制延迟消息批量消息事务消息消息重试最佳实践 基本架构 nameServer: 维护broker列表信息,客户端连接时只需要连接nameServer。可配置成集群。 broker:broker分为master和slave,master负…

Python就业方向有哪些?

Python 作为一门通用、易学且功能强大的编程语言,在多个领域都有广泛的应用,因此就业方向也非常多样化。以下是 Python 主要的就业方向及相关技能要求。 1. Web 开发 岗位:Python Web 开发工程师、后端工程师、全栈工程师技术栈&#xff1a…

iptables 访问控制列表使用记录

iptables 是linux操作系统上自带的防火墙程序,功能强大,能够依据策略过滤掉一些恶意访问流量,本次记录一下iptables的常见使用方法,未尽之处,欢迎补充。 一、iptables 下载 我这里使用的是华为openEuler 22.03版本&am…

16. Qt系统相关:事件、定时器

1. Qt事件 1.1 简介 事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候&#…