因为某些原因,需要使用一台电脑远程开发另外一台电脑的代码,于是VSCode远程开发就是一个很好的方式,而且两台电脑都是win10系统
开启SSH
作为服务器的电脑需要安装并开启Openssh 的 Server 服务
查看是否安装
该服务的作用是让你可以在终端使用ssh指令,Windows10通常自带OpenSSH不需要安装。
在Win10应用中选择 Windows PoweShell(管理员)输入以下指令:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
如果电脑未安装OpenSSH,则State会显示NotPresent:
如果都是NotPresent可直接跳过接下来的安装
鼠标操作安装
鼠标操作相对无脑一点,鼠标点点点就好了。
- 点击win键,弹出的菜单中选择设置按钮
- 在windows设置中,点击应用
- 弹出的应用和功能界面中,点击管理可选功能
- 点击如图所示的添加功能
- 可选功能下面找到OpenSSH server,并点击
- 点击如图所示的安装,等待安装完成即可。如需安装openssh client同样的方法
- 重启电脑,打开命令行工具,输入ssh,显示如图所示说明安装成功
安装成功如下图
命令行操作安装
命令行操作相对简单些
- 安装server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 - 安装client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
配置服务默认启动
- 点击工具栏的搜索按钮,弹出的搜索界面中搜索服务
- 打开的服务界面中,找到OpenSSH Server,右键属性
- 设置为自动启动
- 启动服务
VSCode配置远程服务器
安装Remote-SSH
Remote-SSH是VScode的插件,安装完VScode以后,直接在插件中搜索ssh,即可找到Remote-SSH,点击install安装
配置
安装完Remote-SSH以后左侧会出现一个远程资源管理的图标,选择SSH Targets,进入config配置文件
在配置文件中设置服务器信息,输入HostName和User,保存以后左侧会出现对应机器名称
更改设置,File->Preferences->Settings->Extension->Remote-SSH,找到Show Login Terminal并勾选。
VSCode使用远程服务器
点击SSH TARGETS下的服务器旁边的按钮纽行连接,选择服务器的平台,弹出让你输入密码
成功连上服务器,点击右侧的+号创建服务器的终端窗口,可以正常使用了!
我们还可以打开服务器的文件夹
打开以后可以看到服务器文件目录,直接在文件目录中选择文件进行编辑,实时同步到服务器上,这时候已经可以开始愉快的进行开发了,开发体验媲美本地开发!
通过跳板机链接服务器
有时候我们需要跳板机来连接服务器,也即先连接一台跳板机服务器,然后通过这台跳板机所在的内网再次跳转到目标服务器。最简单的做法就是按上述方法连接到跳板机,然后在跳板机的终端用ssh指令跳转到目标服务器,但这样跳转后,我们无法在VScode中打开服务器的文件目录,操作起来很不方便。
我们可以在config中设置两个服务器,一个是跳板机,一个是内网服务器
首先使用VSCode登录跳板机,然后再登录内网服务器
外网访问
当外网访问,并且没有给我们的服务器分配ip的情况下,这时候要么是要求我们的网络运营商给我们分配一个ip地址,要么是使用内网穿透。
内网穿透 - 花生壳
大概意思就是通过技术手段从公网访问内网,可以参考下面这两篇文章。
zhuanlan.zhihu.com/p/57477087
www.bilibili.com/video/BV1bi… \
花生壳配置
编辑C:\Users\yourname.ssh\config文件指定花生壳分配的端口
尝试在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
然后一路回车
上传公钥到服务器
生成的密钥id_rsa和公钥id_rsa.pub文件都默认保存在(C:\User\用户/.ssh)文件夹下)
在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