Windows系统远程桌面本地Ubuntu虚拟机

本文介绍了解决Windows系统下Linux虚拟机无法与主体机复制粘贴文件的问题,通过在虚拟机上部署远程桌面,利用NAT端口映射实现网络交互,最终实现跨平台文本和文件复制,提升用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用概览

在Windows系统上,有时候我们虽然本地安装了Linux虚拟机系统,但是由于特殊原因导致虚拟机与主体机之间无法复制粘贴文本和文件,但是却有基本的联网功能,此时就可以用本方案解决,即:本地远程桌面方案。

本人由于大作业,需要利用P4编写设计路由协议,老师给的虚拟机文件功能缺失,只能正常联网,无法实现主体机与虚拟机之间文本与文件复制粘贴(主要是影响到我Ctrl+C和Ctrl+V了,hhh),想想这个头疼的问题如果不解决,那我得一点点的手敲命令和借助网络传输文件,那估计得崩溃。。。

主要思路就是,虚拟机上面部署远程桌面,然后利用NAT端口映射实现虚拟机环境和主体机环境的网络交互,最后利用主体机的远程桌面连接Linux虚拟机,利用远程软件实现文件文本的复制粘贴,并且相当程度上还提升了视觉体验(想想虚拟机那破烂界面能跟正统的远程桌面比么?)

由于是本地网络之间交互,所以几乎没有网络延迟。当然,如果是利用远程物理机和虚拟化软件实现的Linux系统,也可以参考本方案进行部署,商业前景可观!

第一步:主体机利用虚拟化软件创建虚拟机

虚拟化软件用老大哥VMware(优点功能强大,缺点软件收费,得找破解版),或者开源软件VirtualBox都可以(优点开源免费,缺点可能功能稍弱)

此次演示,主体机使用win10或者win11系统,虚拟机使用ubuntu系统,虚拟化软件使用VirtualBox,创建虚拟机后界面如下所示:

VMware的操作也是类似的,得先有虚拟机。

第二步:主体机与虚拟机之间网络环境NAT

主体机和虚拟机并不在同一个子网内,主体机使用外部的真实子网,虚拟机使用的内部虚拟子网,我这主体机的子网是10.192.0.0/16的真实子网,而虚拟机的子网是192.168.65.0/24的虚拟子网。为了能够进行远程桌面的正常通信,必须进行NAT地址端口映射。

点击虚拟机设置界面,里面有一个设置是针对网络配置的(VMvare需要编辑–>网络编辑器进去设置):
VirtualBox对应界面:

VMware对应界面:

点击端口转发或者NAT设置,里面添加NAT端口映射,将虚拟机的远程桌面端口(端口号为3389)映射出来。此处外部的端口号我随便设置为6666,主体机远程桌面时用它。
VMware对应界面:

VirtualBox对应界面:

第三步 Ubuntu虚拟机配置远程服务

sudo apt install xrdp
sudo systemctl enable --now xrdp
sudo ufw allow from any to any port 3389 proto tcp

以上指令分别实现:安装远程桌面服务器程序xrdp,安装完成后启动xrdp程序,打开防火墙端口3389

注意,执行完上述步骤后,退出Ubuntu当前账户(注意是Log out,而不是shutdown直接关机了),退出账户后远程服务进程依然会后台运行的。Ubuntu账号没退出桌面显示会异常

退出后,界面大概这样子:

第四步:主体机执行远程桌面连接

此后,我们再也不用管虚拟机里面那一堆破烂玩意了,只有它开机着就行。

进去后,大概这样子:

输入用户名和密码就可以了。

遇到桌面异常,重启桌面服务进程就行(或者重启系统):

sudo systemctl restart xrdp.service
### XShell 连接 Ubuntu 虚拟机失败的原因分析 XShell 无法连接到 VirtualBox 中运行的 Ubuntu 虚拟机可能由多种原因引起,以下是常见的几个方面: 1. **SSH 服务未正常启动**:即使已经安装了 `openssh-server`,但如果 SSH 服务未正确启动,则可能导致连接失败[^3]。 2. **防火墙设置问题**:Ubuntu 的防火墙可能会阻止外部访问,默认情况下某些端口可能是关闭状态[^4]。 3. **网络适配器配置不当**:VirtualBox 的网络模式(NAT、桥接、仅主机等)会影响虚拟机与宿主机之间的通信[^1]。 4. **SSHD 配置文件错误**:如果没有正确配置 `/etc/ssh/sshd_config` 文件中的参数,也可能导致连接被拒绝[^2]。 --- ### 解决方案 #### 1. 确认 SSH 服务已启用并正在运行 可以通过以下命令确认 SSH 服务的状态: ```bash sudo systemctl status ssh ``` 如果服务未运行,可以尝试重新启动它: ```bash sudo systemctl restart ssh ``` #### 2. 修改 SSHD 配置文件 编辑 `/etc/ssh/sshd_config` 文件以确保允许远程连接: ```bash sudo nano /etc/ssh/sshd_config ``` 修改或检查以下几项: - 将 `PermitRootLogin` 设置为 `yes` 或 `prohibit-password`(推荐更安全的方式)。 - 确保 `PasswordAuthentication yes` 已开启(如果是密码登录方式)。 完成修改后保存退出,并重启 SSH 服务: ```bash sudo systemctl restart ssh ``` #### 3. 检查防火墙规则 使用以下命令查看当前防火墙状态以及开放的端口: ```bash sudo ufw status ``` 如果发现 22 端口未打开,执行以下操作来放行该端口: ```bash sudo ufw allow 22/tcp sudo ufw reload ``` #### 4. 验证 IP 地址和网络连通性 在 Ubuntu 终端中获取虚拟机的 IP 地址: ```bash ip addr show ``` 或者使用旧版命令: ```bash ifconfig ``` 记录下对应的 IPv4 地址。接着测试从 Windows 主机能否 ping 通此 IP 地址: ```cmd ping <Ubuntu_IP> ``` 如果无法 ping 通,需调整 VirtualBox 的网络适配器设置为“桥接模式”,以便虚拟机能直接接入局域网。 #### 5. 测试本地连接Ubuntu 上先验证是否能通过 localhost 登录 SSH: ```bash ssh username@localhost ``` 如果成功说明 SSH 功能正常;反之则需要排查上述步骤中的问题。 #### 6. 使用 XShell 进行连接 当一切准备就绪之后,在 XShell 新建会话时输入正确的用户名、IP 和端口号(通常是 22)。点击连接按钮即可建立远程桌面环境下的 Linux 控制台界面。 --- ### 注意事项 - 如果仍然存在问题,请仔细核对每一步骤是否有遗漏之处。 - 对于安全性较高的生产环境中不建议长期保持 root 用户可直接登陆权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦星辰.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值