前言
- 博主目前大四,就读于长沙某大学通信工程专业,研究生在深圳大学城内某校直博
- 实验室目前配置:win11 + 2*英伟达 RTX 3090
- 博主笔记本电脑配置:win10 + DELL G3游匣(2018年)
- 一些闲话:个人认为实验室用Ubuntu环境会比较好,应该用双系统:win10+Ubuntu(linux),win11目前来说相较于win10与我而言没有太多提升,使用兼容性更好的win10更加保险,在win10下可以使用matlab进行仿真实验以及其他需要windows环境的仿真软件,在Ubuntu下做深度学习的训练和部署更加好(毫无疑问比windows要好)。本文需要一定的计算机网络的基础知识:内网/局域网和外网的概念、IP地址的基本概念等以及powershell的基本命令。
- 基本思路:首先考虑到环境配置是在windows下进行,并且两台PC都是在内网中,没有公网IP地址,因此无法直接进行连接,而需要使用内网穿透来通过中介地址进行转换,此外的远程连接使用windows自带的openssh实现。
主机配置
向日葵远程控制(协助)
- 向日葵是一款远程控制软件,通过识别码和验证码可以直接控制远程主机的界面,也可以实现远程调试代码的功能,但是收到网络波动的影响存在卡顿,因此我们考虑使用更加优雅的方法来实现,而因为我没有在实验室的服务器跟前,所以这里使用向日葵远程控制来协助我完成另一种远程调试代码的方法的环境配置
- 直接百度向日葵,同时在两台主机上安装向日葵软件,同时在服务器上开启无人值守和允许控制本机即可
openssh客户端
- 安装:一般来说win10自带了openssh客户端软件,
win+Q
实现搜索快捷键,搜索设置->应用->可选应用
,里面应该有个OpenSSH客户端,如果想要下载服务器可以通过点击添加功能
,在里面找OpenSSH服务器来下载。此外可以通过powershell来安装openssh:官方教程安装OpenSSH - 安装验证:快捷键
win+R
输入powershell并回车,打开powershell界面,输入ssh。
vscode集成开发环境
- vscode下载和安装,并且安装ssh远程调试插件
- 连接(在完成服务器配置之后再执行这一步):
- 快捷键
ctrl+shift+p
打开命令面板,搜索ssh,按照ssh连接命令格式输入:ssh username@hostname(ip address) -p port
,意思是连接到hostname主机下的username用户的ssh服务器的port端口上。省略-p port
表示连接默认端口22。 - 此后添加完成后会打开
.ssh/config
配置文件中,把之前填写的信息添加到该配置文件中。HOST为连接的名字、HOSTNAME为IP地址/域名、User为用户名、Port为端口号(可省略)。 远程资源管理器->找到连接名右键连接
,再然后就是输入密码之类的活儿。
- 快捷键
服务器配置
向日葵远程控制(协助)
- 同主机配置中的说明
openssh服务器端
- 安装openssh:同主机openssh安装的相同
- 此时不能使用ipconfig查找ipv4的地址然后直接使用ssh命令连接,因为这里的地址是内网地址,对外是透明的,我们需要找一个公网ip/域名来做映射,即简单来看:
客户端主机->交换机->Internet->公网ip->服务器
,直接内网到内网是找不到服务器的位置的,因此会报错:Time out。 - 防火墙配置:
- 打开sshd服务:
win+R->services.msc->
- 验证:虽然没有内网穿透,但是可以使用本地连接来做连接测试,即服务器连接服务器自己。在powershell中输入
netstat -ant
可以
Ngrok内网穿透
- 下载ngrok:下载地址,下载之后直接是一个二进制可执行文件
- 注册用户并获取authtoken:然后点击
sign up
注册用户,最终登陆之后复制好自己的token,因为后续映射的时候是需要登陆和token的。使用ngrok.exe authtoken <token>
添加token(这里需要添加环境变量或者在你ngrok目录下进行)。 - 服务器tcp 22号端口映射到公网ip:
ngrok tcp port
端口号即可完成映射。4.tcp.ngrok.io为公网域名,12202为连接端口,所以客户端连接的是该域名和端口而不是局域网中的内网ip和22号端口。
待解决的问题/疑问
- 自动选择windows:
- 使用公私钥验证,而非密码验证节省时间:
- https://www.jetbrains.com/help/pycharm/configuring-remote-interpreters-via-ssh.html