本文转载自微信公众号《编码小二》,作者小二。转载本文请联系codingjunior公众号。1前言最近在搭建VSCode远程开发环境,主要是想解决C/C++代码不能100%跳转的问题。闲话少说,下面是安装过程。2操作步骤2.1安装SSH由于我们使用SSH连接远程服务器,所以Windows需要支持SSH。可以通过安装Git获得SSH功能,如何验证?使用Win+R,输入cmd打开控制窗口,直接输入ssh,如下图,说明SSH已经安装成功;2.2添加插件使用VSCode最方便的一点就是有很多Plugins可以使用。这次我们需要用到Remote-SSH插件,它是这个样子的,不要搞错了安装好插件后,可以在侧边栏看到“RemoteExplorer”的图标。2.3配置SSHkey目的:将本机添加到远程服务器连接白名单中,让服务器知道认证过的计算机正在连接。过程类似于在GitHub网站上添加本地电脑的SSH公钥。1.使用以下命令生成SSH公钥文件。如果已经生成,可以直接使用,跳到第2步。#方法1ssh-keygen#方法2,参考使用Git生成密钥ssh-keygen-trsa-C"youremail@example.com"2.一般生成密钥文件,路径为:C:\Users\user\。ssh,找到公钥文件id_rsa.pub,复制到远程服务器根目录下的.ssh文件夹中。(1)根目录不一定是/.ssh路径,可以是你自己的用户目录,像这样:/zhaochen/.ssh。(2)没有.ssh文件夹怎么办?创建一个新文件夹并将其命名为.ssh。同时需要确认远程服务器是否支持SSH。如果此时是通过SSH连接的,那肯定是支持的。3.生成authorized_keys文件。这样以后在使用Remote插件的时候,就可以不用密码直接登录服务器了。(1)连接远程服务器方法一:通过Windowscmd命令框,使用以下命令+密码连接远程服务器#标准命令,输入后会提示输入密码sshusername@ip-pport#示例,注意:SSH默认使用22端口sshzhaochen@192.168.1.1-p22方法二:使用SSH连接服务器(2)进入.ssh目录,使用以下命令生成authorized_keys文件。catid_rsa.pub>authorized_keys4、在cmd窗口,按如下方式重试,可以看到可以不用密码直接连接服务器。如果你已经使用SSH连接过远程服务器,小二分享一个更简单的方法:1.在文件夹下,新建一个authorized_keys文件;2、将id_rsa.pub文件的所有内容复制到authorized_keys文件中;2.4添加配置文件目的:配置VSCode连接远程服务器的一些基本信息。1、点击左侧“RemoteExplorer”图标,点击右上角的小齿轮(Settings)2、在弹出的窗口中,选择第一个config文件打开,参考下图,填写在对应的信息中(1)参照上面的配置,解释如下Host<远程主机名>HostName<远程主机IP>User<用户名>PortIdentityFile<本地SSH私钥路径>ForwardAgentyesHost:连接的主机名,可以自定义;Hostname:远程主机的IP地址;User:用于登录远程主机的用户名;端口:用于登录远程主机的端口,SSH默认为22;IdentityFile:本地私钥文件id_rsa路径;(2)如果需要连接多个远程服务器,可以参考上面的内容,配置多个;Host<远程主机名1>HostName<远程主机1IP>User<用户名1>PortIdentityFile<本地SSH私钥路径>ForwardAgentyesHost<远程主机name2>HostName<远程主机2IP>User<用户名2>PortIdentityFile<本地SSH私钥路径>ForwardAgentyes2.5连接测试1.输入“RemoteExplorer”选项,在主机名上右击;2.选择连接远程服务器的方法,测试;3.如果连接成功,左下角会显示当前连接的主机名。参考1.VSCodeRemoteSSH配置-知乎(zhihu.com)(https://zhuanlan.zhihu.com/p/68577071)3问题总结3.1插件安装我们搭建好RemoteSSH环境后,VSCode支持在远程服务器安装插件。此时可以根据自己的开发习惯,在不同的地方安装插件。3.2连接错误如果报错信息如下:couldnotestablishconnectionto“XXX”.Connectingwascanceled.VScoderemote'_workbench.downloadResource'failedvscodecouldnotestablish_workbench.downloadResource,可以直接参考这篇文章:VSCodeRemote报错无法连接??3.3ExtendedsshconnectionfailedSSH连接远程服务器失败,有如下错误信息:couldnotestablishconnectiontoXXX,thepathargumentmustbeoftypestring,receivedtypeundefined。问题原因:找不到SSH可执行文件。解决方法如下:1、按F1,进入Remote-SSH:Settings,找到remote.SSH.path,将此路径修改为本地Git安装程序中的ssh.exe文件;2、参考下图:参考1、Visualstudiocodeextensionsshconnectionfailed:The"path"argumentmustbeoftypestring.收到类型undefined_'sMi-Mostone'sBlog-CSDNBlog(https://blog.csdn.net/mostone/article/details/103023476)3.4C/C++环境错误1.错误截图如下:2.报错日志如下:UpdatingC/C++dependencies...下载包“C/C++languagecomponents(Linux/x86_64)”失败。重试...失败。重试...失败。重试...等待8秒...失败。正在重试...等待16秒...无法下载https://go.microsoft.com/fwlink/?linkid=2164295在downloadPackages阶段失败错误:connectECONNREFUSED23.41.74.108:443atTCPConnectWrap.afterConnect[asoncomplete](net.js:1146:16)如果您在离线环境中工作或反复看到此错误,请尝试从https://github.com/microsoft/vscode-cpptools/releasespre-includedwithalldependencies下载,然后使用VSCode中的“从VSIX安装”命令进行安装。3、问题原因:小二猜测是因为远程服务器离线使用了插件导致C/C++的扩展安装失败;4.错误日志中有详细的解决方法。简单说明如下:(1)手动下载cpptools-linux.vsix文件,放到远程服务器;网址:Releasesmicrosoft/vscode-cpptools(github.com)(2)进入插件选项卡,点击,选择InstallfromVSIX...,选择刚刚下载的文件;(3)最后,等待安装完成,点击reload窗口,就大功告成了。参考1.vscode解决下载包失败导致找不到符号的问题《C/C++语言组件(Linux/x86_64)》文章/details/115774007)2.发布microsoft/vscode-cpptools(github.com)(https://github.com/microsoft/vscode-cpptools/releases)4小结1.详细总结VSCode搭建远程开发环境的过程;2.对RemoteSSH相关的插件安装和问题进行了补充和改进,比较有意义;