VSCode『SSH』连接服务器『GUI界面』传输

前言

最近需要使用实验室的服务器训练带有 GUI 画面的 AI 算法模型(pygame),但是我是使用 SSH 连接的,不能很好的显示模型训练的效果画面,所以下面将会讲解如何实现 SSH 连接传输 Linux GUI 画面的

注:我们没有采用直接在 Linux 上搭建远程桌面,是因为我们平时跑模型极少需要用到 GUI,并且安装远程桌面可能影响性能,因此采用上述方式来解决问题

操作系统:Windows 11(本地机) Ubuntu 20.04(远程机)

本文最终效果就是在 VS Code 的 Remote-SSH 连接到服务器显示服务器端 GUI 画面

客户端配置

SSH配置

配置 VS Code 的 Remote-SSH 需要用到的 .ssh\config 文件

Host 主机名
    HostName 域名或IP
    User 用户名
    Port SSH的端口
    IdentityFile ~/.ssh/id_rsa
    ForwardX11 yes
    ForwardX11Trusted yes

重点是下面这两行

    ForwardX11 yes
    ForwardX11Trusted yes

VcXsrv

官网下载:VcXsrv Windows X Server download | SourceForge.net

安装完会出现XLaunch在菜单中,这就是我们需要的所谓XServer软件

image-20230919195731482

服务端配置

配置 $DISPLAY10.0

# 显示
echo $DISPLAY
# 配置
export DISPLAY=localhost:10.0

image-20230919200009182

开始运行

VcXsrv

开始运行 XLaunch,然后 Display number 需要填写上面我们设定的 $DISPLAY 的值(10),最后勾选Disable access control,其它按默认即可

VSCode

我们连接服务器之后输入如下代码

xeyes

但是之后我出现了如下问题 Error: Can't open display: localhost:10.0,解决方案如下

export DISPLAY=localhost:10.0 里面的 localhost 需要替换为 Windows 主机的 IP,命令行输入 ipconfig 即可获取 IP

最后我们输入 xeyes 我们应该就可以看到如下测试画面

image-20230919211426657

下面我再随便编写个 pygame 的游戏界面作为测试,大功告成

image-20230919211615681

参考文章

当通过 VS Code 的 Remote-SSH 连接到服务器时如何显示服务器端 GUI(以 Windows 本地 → Ubuntu 远程为例) - 知乎 (zhihu.com)

解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题_郭庆汝的博客-CSDN博客

【Linux】解决ssh连接终端无GUI无法显示python图像【服务器】_moba远程服务器plt.show_Jack Lin的博客-CSDN博客

本文由博客一文多发平台 OpenWrite 发布!

### 如何通过 VSCode 使用 SSH 将本地文件上传到远程服务器 #### 配置 Remote-SSH 插件 为了实现通过 VSCodeSSH 功能将本地文件上传到远程服务器,首先需要完成基本的 Remote-SSH 插件配置。这包括以下几个方面: 1. **安装并启用 Remote-SSH 插件** 打开 VSCode 并进入扩展市场,搜索 `Remote - SSH` 插件并安装。完成后重启 VSCode。 2. **添加新的 SSH 主机** 打开命令面板 (`Ctrl+Shift+P`),输入 `Remote-SSH: Add New SSH Host...` 后按下回车键,在弹出的对话框中输入目标服务器的信息,例如: ```bash ssh username@server_ip_address ``` 完成后选择保存位置,默认为 `.ssh/config` 文件[^3]。 3. **验证连接** 在右侧状态栏找到代表 Remote-SSH 的图标(通常是一个蓝色方框),点击后选择新添加的主机地址,并按照提示输入密码或其他认证信息完成首次连接测试。 #### 实现文件上传功能 一旦完成了上述基础设置,就可以利用以下方法之一来执行文件上传操作: 1. **直接拖放方式** 当成功建立与远程服务器之间的会话后,左侧资源管理器 (Explorer View) 中会出现该服务器的工作目录结构。此时可以直接从外部磁盘或者电脑其他路径复制所需文件,然后将其拖放到对应的远程文件夹内即可自动同步过去[^2]。 2. **使用内置终端手动拷贝** 如果某些情况下无法顺利采用图形界面交互,则还可以借助于命令行工具来进行批量处理。例如,可以在集成终端里运行如下指令: ```bash scp /path/to/local/file username@server_ip:/remote/path/ ``` 此命令能够有效地把指定单个或多个项目迁移到另一端点处[^4]。 另外值得注意的是,对于大型数据集而言,单纯依靠 GUI 或者简单的 shell 脚本可能会显得效率低下甚至不可行。因此在这种场景下建议考虑专门设计用来加速此类任务的应用程序如 FileZilla ,它支持 SFTP 协议从而允许用户更加便捷高效地管理跨平台间的资料交换过程。 ```python import paramiko def upload_file_via_paramiko(local_path, remote_path, hostname, port, username, password): try: transport = paramiko.Transport((hostname, int(port))) transport.connect(username=username, password=password) sftp = paramiko.SFTPClient.from_transport(transport) sftp.put(local_path, remote_path) print(f'File {local_path} uploaded successfully to {remote_path}') except Exception as e: print('An error occurred:', str(e)) finally: if 'sftp' in locals(): sftp.close() if 'transport' in locals(): transport.close() upload_file_via_paramiko('/absolute/or/relative/source', '/destination/on/server', 'your_server_ip', 22, 'your_username', 'your_password') ``` 以上 Python 示例展示了另一种自动化解决方案——基于 Paramiko 库构建自定义脚本来简化日常运维工作流中的重复劳动环节。 ---
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白木Channel

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

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

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

打赏作者

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

抵扣说明:

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

余额充值