1、下载vscode
百度搜索vscode(注意不是visual studio),进入vscode官网进行下载。
2、安装ssh插件
根据你的操作系统选择对应的版本进行下载和安装。 安装完成之后,启动vscode,选择左侧Extensions 选项卡,在输入框搜索 remote ,选择安装Remote-SSH插件。
**3、添加服务器连接配置 **
下载完毕会在侧边栏产生“远程资源管理器”图标,打开远程资源管理器,点击右上角设置进入配置界面,编写配置文件,并保存。
Host MyName # 服务器名称
HostName 192.168.0.1 # 服务器ip
User root # 登录用户名
Port 22 # 端口, 22
# IdentityFile "C:\Users\****\.ssh\id_rsa" # 本地密钥路径
4、配置远程免密登录
ssh-keygen -t rsa -C [email protected]
C:\\user\\username\\.ssh
目录下 Note:这里 id_rsa.pub
为公钥,需要我们上传到服务器上的 /home/username/.ssh
文件夹中,id_rsa
为私钥,需要我们在本地使用
cat id_ras.pub >> authorized_keys
authorized_keys文件如果没有,会自动进行创建
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
Host MyName # 服务器名称
HostName 210.30.97.162 # 服务器ip
User root # 登录用户名
Port 22 # 端口, 9022
IdentityFile "C:\Users\****\.ssh\id_rsa" # 本地密钥路径
如果以上步骤都成功了,那么就会在文件选项卡中看到远程服务器目录下的所有文件了:
此时,你就可以像操作本地文件一样进行文件的增删改查等操作啦!
在VSCode中通过SSH连接服务器,使用 cv2.imshow
或 plt.show()
无法显示图像。
解决思路如下:
1、首先查看与服务器之间的网络连接问题
在本地端打开cmd,使用指令ping xxx.xxx.xxx.xxx,其中(xxx.xxx.xxx.xxx为服务器的IP地址)
在VSCode或者 MobaXterm 中从服务器ping本地端
使用指令ping xxx.xxx.xxx.xxx,其中(xxx.xxx.xxx.xxx为本地端的IP地址)
这一步,默认状态下的Windows 11系统是ping不通的,这是因为防火墙直接给拦截了,去系统中关闭防火墙,再次尝试,直到能ping通为止。
关闭防火墙步骤:
控制面板搜索Defender
然后关闭防火墙
2、在服务器端
~/.bashrc文件中加入:
export DISPLAY="10.69.164.78:0.0"
其中引号中内容为本地端IP地址+:0.0。
然后终端运行 source ~/.bashrc
使生效。
在本地端安装MobaXterm,
点击Settings–>Configurations–>X11,设置如下
Display offset设置为0,如果设置为1的话,对应的第二步骤引号的内容改为本地端IP地址+:1.0,以此类推。
X11 remote access改为full,表示开放远程访问所有权限。
3、配置VSCode
注意:本地和服务器都需要安装 Remote X11 插件。如果你只在本地安装了插件,再次搜索它,然后你会看到这样的选项,安装就完事了
进入你的ssh配置 C:\Users\xxx\.ssh\config
,在末尾添加:
ForwardX11 yes
ForwardX11Trusted yes
ForwardAgent yes
4、保持MobaXterm开启的状态下,在VSCode中运行xclock,会显示一个时钟。
5、opencv显示测试(测试过程中需保持MobaXterm开启的状态)
示例代码:
import cv2 as cv
src = cv.imread("./spoofing_detection-master/figures/general_flowchart_PAD.png")
cv.namedWindow("test",0)
cv.imshow("test",src)
cv.waitKey(0)
cv.destroyAllWindows()
6、matplotlib显示测试(测试过程中需保持MobaXterm开启的状态)
示例代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
ax = plt.axes(projection='3d')
ax.scatter(np.random.rand(10),np.random.rand(10),np.random.rand(10))
plt.show()