华清学云教育(西安)科技有限公司

VSCode运用Remote SSH跟尾近程服务器

本文转载自微信群众号「编码小二」,作者小二 。转载本文请联络编码小二群众号。

1 前言

比来在搭建一套 VSCode 的远端开发情形,次要想经管 C/C++ 代码不克不迭 100% 跳转的成就。

闲言少叙,按部就班进程奉上。

2 操作步伐

2.1 按部就班 SSH

由于我们是运用 SSH 跟尾近程服务器,因而 Windows 需求支持 SSH 。

可以或许经由过程按部就班 Git 来取得 SSH 功用,怎么验证?运用 Win + R ,输入 cmd 关上掌握窗口,间接输入 ssh ,以下提示,则代表 SSH 已经按部就班乐成;

2.2 增加插件

运用 VSCode 最方便的一点,就是有良多插件可供抉择。

本次我们需求运用 Remote - SSH 插件,长这个样子,不要搞错了

按部就班完插件后,在侧边栏可以或许看到 “近程资源打点器” 图标。

2.3 设置SSH密钥

目标:将本机增加到近程服务器跟尾白名单,让服务器晓得是已认证的电脑在跟尾。进程近似于 GitHub 网站增加外埠电脑的 SSH 公钥。

一、运用以下敕令,生成 SSH 公钥文件。假定已经生成,则可间策运用,跳到步伐二。

# 编制一 ssh-keygen  # 编制二,参考运用Git生成密钥 ssh-keygen -t rsa -C "youremail@example.com" 

二、普通生成的密钥文件,门路为:C:\Users\user\.ssh ,找到公钥文件 id_rsa.pub ,复制到近程服务器 根目录 的 .ssh 文件夹中。

(1)根目录,不必定非若是 /.ssh 门路,可以是自身的用户目录,近似这样:/zhaochen/.ssh。

(2).ssh 文件夹没有怎么办?新建一个文件夹,命名为 .ssh 即可。同时要确认近程服务器是否支持 SSH ,假定斯时正是经由过程 SSH 编制跟尾的,那必然是支持了。

三、生成 authorized_keys 文件。这样后续在运用 Remote 插件时,不需求密码,就能间接登录到服务器。

(1)跟尾到近程服务器

编制一:经由过程 Windows 的 cmd 敕令框,运用以下敕令 + 密码,跟尾到近程服务器
# 标准敕令,输入后会提示输入密码 ssh username@ip -p port  # 示例,注:SSH默以为22端口 ssh zhaochen@192.168.1.1 -p 22 
编制二:已经运用 SSH 编制跟尾到服务器

(2)进入 .ssh 目录,运用以下敕令,生成 authorized_keys 文件。

cat id_rsa.pub > authorized_keys 

四、在 cmd 窗口,再次查验测验以下,可以或许看到无需密码,直一连上服务器

假定已运用 SSH 编制跟尾到近程服务器,小二再分享一种更俭朴的编制:

一、在 .ssh 文件夹下,新建 authorized_keys 文件;

二、将 id_rsa.pub 文件中的内容整个复制到 authorized_keys 文件即可;

2.4 增加设置文件

目标:设置 VSCode 跟尾近程服务器的一些根抵信息。

一、点击左边的 “近程资源打点器” 图标,公司产品点击右上角的小齿轮(设置)

二、在弹进去的窗口中,抉择第一个 config 文件关上,参考下图,填写对应信息

(1)参考上述设置,释义以下

Host <近程主机名称>     HostName <近程主机IP>     User <用户名>     Port <ssh端口,默认22>     IdentityFile <本机SSH私钥门路>     ForwardAgent yes <VSCode 自身增加的,不消管> 
Host :跟尾的主机名称,可自定义; Hostname :近程主机的 IP 地点; User :用于登录近程主机的用户名; Port :用于登录近程主机的端口,SSH 默以为 22 ; IdentityFile :外埠的私钥文件 id_rsa 门路;

(2)假定需求跟尾多个近程服务器,可参考如上内容,设置多个即可;

Host <近程主机名称1>     HostName <近程主机1 IP>     User <用户名1>     Port <ssh端口,默认22>     IdentityFile <本机SSH私钥门路>     ForwardAgent yes <VSCode 自身增加的,不消管> Host <近程主机名称2>     HostName <近程主机2 IP>     User <用户名2>     Port <ssh端口,默认22>     IdentityFile <本机SSH私钥门路>     ForwardAgent yes <VSCode 自身增加的,不消管> 

2.5 跟尾测试

一、进入 “近程资源打点器” 选项,右键点击主机名;

二、抉择一种编制,跟尾到近程服务器,举行测试;

三、假定跟尾乐成,左下角则会体现今后已跟尾的主机名。

参考材料

一、VS Code Remote SSH设置 - 知乎 (zhihu.com)(https://zhuanlan.zhihu.com/p/68577071)

3 成就汇总

3.1 插件按部就班

当我们搭建好 Remote SSH 情形后,VSCode 支持在 近程服务器 按部就班插件。

此时就能痛处自身的开发习性,将插件按部就班到差别地方了。

3.2 跟尾报错

假定舛误提示以下:

could not establish connection to “XXX“.Connecting was canceled.  VScode remote '_workbench.downloadResource' failed  vscode could not establish _workbench.downloadResource 

可间接参考这篇文章:VSCode Remote 报错,没法跟尾??

3.3 扩张ssh跟尾失利

SSH 跟尾近程服务器失利,有以下舛误提示:

could not establish connection to XXX, the path argument must be of type string, received type undefined。 

成就启事:找不到 SSH 可执旅顺序。

经管编制以下:

一、按下 F1 ,输入 Remote-SSH: Settings ,找到 remote.SSH.path ,编削此门路为外埠 Git 按部就班顺序中的 ssh.exe 文件即可;

二、参考下图:

参考材料

一、Visual studio code 扩张 ssh 跟尾失利:The "path" argument must be of type string. Received type undefined_的米-漠石's Blog-CSDN博客(https://blog.csdn.net/mostone/article/details/103023476)

3.4 C/C++情形舛误

一、舛误截图以下:

二、舛误日志以下:

正在更新 C/C++ 寄托项...正在下载顺序包“C/C++ language components (Linux / x86_64)” 失利。正在重试... 失利。正在重试... 失利。正在重试...正在等待 8 秒... 失利。正在重试...正在等待 16 秒... 未能下载 https://go.microsoft.com/fwlink/?linkid=2164295在阶段 downloadPackages 失利Error: connect ECONNREFUSED 23.41.74.108:443at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16)假定在脱机情形中事变或反复看到此舛误,请查验测验从 https://github.com/microsoft/vscode-cpptools/releases 下载预包孕了全体寄托项的扩张版本,尔后运用 VS Code 中的“从 VSIX 按部就班”敕令来按部就班它。

三、成就启事:小二猜测,是由于近程服务器脱机运用插件,导致 C/C++ 的扩张按部就班失利;

四、经管编制,舛误日志中已经相比详细。简要形貌以下:

(1)手动下载 cpptools-linux.vsix 文件,放到近程服务器中;网址:Releases · microsoft/vscode-cpptools (github.com)

(2)进入插件选项卡,点击 ··· ,抉择 从 VSIX 按部就班... ,选中适才下载的文件;

(3)最后等待按部就班终了,点击重载窗口,就大功乐成为了。

参考材料

一、vscode 经管正在下载顺序包“C/C++ language components (Linux / x86_64)” 失利引发的标志找不到成就_chenwr2018的博客-CSDN博客(https://blog.csdn.net/chenwr2018/article/details/115774007)

二、Releases · microsoft/vscode-cpptools (github.com)(https://github.com/microsoft/vscode-cpptools/releases)

4 总结

一、详细总结 VSCode 搭建近程开发情形的进程;

二、对插件的按部就班、Remote SSH 相干成就做了增补完善,相对具有参考意思;