(转)「效率」使用VScode连接远程服务器进行开发
原文:https://zhuanlan.zhihu.com/p/141205262
VScode简介
由微软推出的一款轻量级编辑器,拥有大量可拓展插件,可以根据自己的需求添加插件使编辑器的功能丰富起来。VScode和Sublime Text应该是最受欢迎的两款编辑器,本文将介绍在Windows下如何使用VScode连接远程linux服务器进行开发。
为什么用VScode
连接远程服务器的方法有很多,比如可以借助XShell、putty等软件使用ssh命令来登录远程服务器。但如果使用这种连接方法在远程服务器上进行开发工作,会来带诸多不便,比如:
- 全程只能在终端使用指令操作,文件操作麻烦。
- 写代码不方便,我们可能会先在本地写好代码再使用scp指令把源代码传送到服务器再运行,或直接在服务器上使用Vim或Vi进行编辑,这些操作起来我个人觉得都不顺手。
- 服务器上的图片无法查看,比如有时候我们的程序最后输出一些图片,我们在终端上无法查看,还要传回本地才能看到。
使用VScode能够很好的解决以上问题,VScode连接服务器后的方便程度和本地开发几乎没有差别!在VScode中编辑代码直接同步更新到服务器上,可以用鼠标在文件目录对文件进行操作,可以查看图片。
如何使用VScode连接远程linux服务器
安装VScode
直接在官网下载即可。
安装OpenSSH
该服务的作用是让你可以在终端使用ssh指令,Windows10通常自带OpenSSH不需要安装。
- Windows10下检查是否已经安装OpenSSH的方法:
按下快捷键Win + X
,选择Windows PoweShell(管理员)
,输入以下指令:Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
如果电脑未安装OpenSSH,则State
会显示NotPresent
:
- 如果未安装,则输入指令:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
安装完成后会出现以下输出:
- OpenSSH安装成功后,
Win+R
输入cmd进入终端,输入ssh
命令应该得到如下结果:
安装Remote-SSH
Remote-SSH是VScode的插件,安装完VScode以后,直接在插件中搜索ssh,即可找到Remote-SSH,点击install
安装。
配置Remote-SSH
安装完Remote-SSH以后左侧会出现一个远程资源管理的图标,选择SSH Targets,进入config配置文件
在配置文件中设置服务器信息,输入HostName和User,保存以后左侧会出现对应机器名称。
更改设置,File->Preferences->Settings->Extension->Remote-SSH
,找到Show Login Terminal并勾选。
连接服务器
点击SSH TARGETS下的服务器旁边的按钮纽行连接,弹出让你输入密码:
在这里可能会弹出让你选择服务器的平台,需要选择以后才会出现输入密码的步骤
成功连上服务器,点击有右侧的+
号创建服务器的终端窗口,可以正常使用了!
我们还可以打开服务器的文件夹
打开以后可以看到服务器文件目录,直接在文件目录中选择文件进行编辑,实时同步到服务器上,这时候已经可以开始愉快的进行开发了,开发体验媲美本地开发!
通过跳板机连接服务器
有时候我们需要跳板机来连接服务器,也即先连接一台跳板机服务器,然后通过这台跳板机所在的内网再次跳转到目标服务器。最简单的做法就是按上述方法连接到跳板机,然后在跳板机的终端用ssh
指令跳转到目标服务器,但这样跳转后,我们无法在VScode中打开服务器的文件目录,操作起来很不方便。我们可以把config的设置改成如下,就可以通过c00跳板机跳转到c01了:
Host c00
HostName xxx.xxx.xxx.xxx(跳板机IP)
User lyfeng
Host c01
HostName 192.168.0.10(内网地址)
User lyfeng
ProxyCommand "openssh的安装路径"\ssh.exe -W %h:%p -q c00
# 连接c00, 再通过c00的局域网ssh到c01
openssh的安装路径因人而异(我这里是C:\Windows\System32\OpenSSH\ssh.exe)
结语
本文是效率系列的第二篇文章,介绍了如何使用VScode连接服务器进行开发。VScode的Remote-SSH插件是让我使用VScode的直接原因,实在舒畅,再也不需要使用XShell和Vim这些组合来在远程服务器上开发了!如果大家还有其他提高工作效率的工具,欢迎讨论分享!评论看到了我会尽量回复的!