VSCode 远程开发 - Windows

3,929 阅读5分钟

因为某些原因,需要使用一台电脑远程开发另外一台电脑的代码,于是VSCode远程开发就是一个很好的方式,而且两台电脑都是win10系统

开启SSH

作为服务器的电脑需要安装并开启Openssh 的 Server 服务

查看是否安装

该服务的作用是让你可以在终端使用ssh指令,Windows10通常自带OpenSSH不需要安装。

在Win10应用中选择 Windows PoweShell(管理员)输入以下指令:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
如果电脑未安装OpenSSH,则State会显示NotPresent

image.png

如果都是NotPresent可直接跳过接下来的安装

鼠标操作安装

鼠标操作相对无脑一点,鼠标点点点就好了。

  • 点击win键,弹出的菜单中选择设置按钮

未标题-1.png

  • 在windows设置中,点击应用

image.png

  • 弹出的应用和功能界面中,点击管理可选功能

image.png

  • 点击如图所示的添加功能

image.png

  • 可选功能下面找到OpenSSH server,并点击

image.png

  • 点击如图所示的安装,等待安装完成即可。如需安装openssh client同样的方法

image.png

image.png

  • 重启电脑,打开命令行工具,输入ssh,显示如图所示说明安装成功

image.png

安装成功如下图

image.png

命令行操作安装

命令行操作相对简单些

  • 安装server Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  • 安装client Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

image.png

配置服务默认启动

  • 点击工具栏的搜索按钮,弹出的搜索界面中搜索服务

未标题-1.png

  • 打开的服务界面中,找到OpenSSH Server,右键属性

image.png

  • 设置为自动启动

image.png

  • 启动服务

VSCode配置远程服务器

安装Remote-SSH

Remote-SSH是VScode的插件,安装完VScode以后,直接在插件中搜索ssh,即可找到Remote-SSH,点击install安装

image.png

配置

安装完Remote-SSH以后左侧会出现一个远程资源管理的图标,选择SSH Targets,进入config配置文件

image.png

在配置文件中设置服务器信息,输入HostName和User,保存以后左侧会出现对应机器名称

image.png

更改设置,File->Preferences->Settings->Extension->Remote-SSH,找到Show Login Terminal并勾选。

image.png

VSCode使用远程服务器

点击SSH TARGETS下的服务器旁边的按钮纽行连接,选择服务器的平台,弹出让你输入密码

image.png

image.png

成功连上服务器,点击右侧的+号创建服务器的终端窗口,可以正常使用了!

image.png

我们还可以打开服务器的文件夹

image.png

打开以后可以看到服务器文件目录,直接在文件目录中选择文件进行编辑,实时同步到服务器上,这时候已经可以开始愉快的进行开发了,开发体验媲美本地开发!

通过跳板机链接服务器

有时候我们需要跳板机来连接服务器,也即先连接一台跳板机服务器,然后通过这台跳板机所在的内网再次跳转到目标服务器。最简单的做法就是按上述方法连接到跳板机,然后在跳板机的终端用ssh指令跳转到目标服务器,但这样跳转后,我们无法在VScode中打开服务器的文件目录,操作起来很不方便。

我们可以在config中设置两个服务器,一个是跳板机,一个是内网服务器
首先使用VSCode登录跳板机,然后再登录内网服务器

image.png

外网访问

当外网访问,并且没有给我们的服务器分配ip的情况下,这时候要么是要求我们的网络运营商给我们分配一个ip地址,要么是使用内网穿透。

内网穿透 - 花生壳

大概意思就是通过技术手段从公网访问内网,可以参考下面这两篇文章。
zhuanlan.zhihu.com/p/57477087
www.bilibili.com/video/BV1bi… \

花生壳配置 image.png

编辑C:\Users\yourname.ssh\config文件指定花生壳分配的端口 image.png

尝试在windows客户端登录 ssh username@花生壳域名 -p 花生壳端口

当出现 Bad owner or permissions on C:\\Users\\

windows系统

  • 进入如下路径C:\Users\用户名.ssh,你会看到有config这个文件
  • 右击config,属性安全高级禁止继承删除所有继承(忘了全称了,大概这个意思)确定 ,如果系统是英文: Properties -> Security -> Advanced -> Disable Inheritance -> Remove all inherited permissions from this object
  • 然后尝试手动编辑config这个文件,当不能编辑时,手动在属性安全编辑中添加当前用户,并且权限“允许”全部勾选

SSH免密登录

简化登录需要输入密码。

客户端生成公私钥

在cmd下输入ssh-kengen -t rsa -b 4096 或者 ssh-kengen
然后一路回车

image.png

上传公钥到服务器

生成的密钥id_rsa和公钥id_rsa.pub文件都默认保存在(C:\User\用户/.ssh)文件夹下)

image.png

在cmd下输入

SET REMOTEHOST=your-user-name-on-host@host-fqdn-or-ip-goes-here
 
scp %USERPROFILE%\.ssh\id_rsa.pub %REMOTEHOST%:~/tmp.pub
ssh %REMOTEHOST% "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"

第一行作用相当于设置变量名,REMOTEHOST设置格式为“你在服务器的用户名@服务器的ip地址”
例如我在服务器的用户名是“lpy”,远程服务器的ip为49.52.10.120,那么我的第一行代码就是
SET REMOTEHOST=lpy@49.52.10.120

第二行scp命令的详细知识可以参考scp使用说明,它是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令。知道这条命令的作用之后,我们就能知道前半部分是本地公钥文件的位置,后半部分是远程服务器端当前目录下名为tmp.pub的文件,我们要把本地的公钥拷贝到这个临时文件里。

%USERPROFILE%就是本地主机的用户名,在C:\Users这里找,%REMOTEHOST%是我们刚刚已经SET过的哦,就不用管它啦。

测试免密登录

ssh root@192.168.235.22

参考