vscode通过Remote-SSH连接远程机器(ubuntu 18.04)

需求:

1.vscode可以通过SSH协议连接到远程机器

2.vscode可以通过SSH协议访问远程机器上的命令行终端功能

3.vscode可以通过SSH协议访问远程机器上的任意文件

4.vscode可以通过SSH协议使本机与远程机器文件互传

环境:

1.工作机器在局域网内,系统为win7,其本地ip:192.168.0.109,且带一张无线网卡,可用于访问Internet。

2.远程机器一个虚拟机,其系统是ubuntu18.04(用户名:tanglx,密码:123),其被布置在局域网中另外一台机器上,这台虚拟机拥有和本地局域网互通,以及访问Internet的能力,其本地ip:192.168.0.105。

步骤:

Step1:vscode是通过SSH连接远程机器,故而本机需要安装SSH客户端。在下列链接处下载相应的OpenSSH版本。

Releases · PowerShell/Win32-OpenSSH · GitHubwx

我本机下载的是,OpenSSH-Win64.zip,将该文件解压到指定文件夹,我本机解压到D盘,这里需要记住,ssh.exe的路径,此处ssh.exe的全路径为D:\OpenSSH-Win64\ssh.exe。后面vscode会使用该路径来调用ssh客户端。

Setp2:vscode是通过SSH协议来连接到远程机器,故而远程机器上需要有SSH服务。在远程机器上执行下列语句,用来安装SSH服务。

更新源信息:sudo apt update

安装SSH服务:sudo apt install openssh-server

一般安装之后,SSH服务就会启动,但还是提供如下三个命令用于查看,或者重启SSH服务。

设置开机启动:systemctl enable ssh
重启SSH服务:systemctl restart ssh
查看SSH服务状态:systemctl status ssh

顺利的话,直接就可以了,且此处就可以跳至下一步骤。不顺利可以跳到后话章节看一下。

Setp3:在我们的工作机器上下载安装一个vscode,需要注意的是vscode支持在win7上使用的最后一个版本是1.70.3,我工作机安装的是win7,故而下载的是vscode(1.70.3)。

vscode官网:Visual Studio Code - Code Editing. Redefined

vscode 1.70版本下载地址:Visual Studio Code July 2022

Setp4:在vscode安装完成后,点击菜单栏中的“View”--“Extensions”,在“Extensions”窗口的搜索栏中输入Chinese,选择出来的Chinese(Simplifiled)(最好是有Microsoft认证的),点击安装,安装完成后,vscode就变成中文支持了。

Setp5:点击菜单栏中的“查看”--“扩展”,在“扩展”窗口的搜索栏中输入“Remote SSH”,选择下面显示的Remote-SSH项(最好是有Microsoft认证的),点击安装。安装完成后,需要设置本机的ssh路径,操作步骤:点击左侧菜单栏的“扩展”,找到安装的Remote SSH,点击“设置”--“扩展设置”,在右边的设置详情区,找到“Remote SSH:Path”项,并且填入Step1中的ssh.exe的绝对路径,示意详情如下图:

Step6:点击左侧出现的“远程资源管理器”,会出现一个“远程资源管理器窗口”,在窗口中可以看到“SSH TARGETS”这一项,点击旁边的“+”号,会弹出命令窗口,在命令窗口输入:

“ssh tanglx@192.168.0.105”

具体如下图所示:

按下回车键,会出现一些路径选择,以及一些设置和帮助项,其具体如下图。我们选择其中一个路径“C:\ProgramData\ssh\ssh_config”。此处需要注意的是要保证该文件或者文件夹拥有创建修改的权限,如果没有相关权限,可以指定其他地方。注:事实上此处是选择一个文件作为ssh连接的配置文件,我们可以自己指定文件。如果需要指定文件,我们在“Remote - SSH”扩展的“扩展设置”中找到Remote SSH:Config.file项,即可进行相应的编辑。

 Step7:完成上述动作后,在SSH TARGETS下会出现一个项,这个项是一个SSH连接的实例,其如下图所示:

在该项上点击右键,选择“Connect Host In Current Window” ,等待其连接成功,一般都会成功。如果不成功,则需要根据具体原因来查找,此处不讲述。在连接成功之后,远程机器会去下载相应版本的vscode-server,并且将其运行起来。在vscode的“查看”--“终端”这一栏会有如下信息:

tanglx@192.168.0.105's password:
2074f1407276: running
Acquiring lock on /home/tanglx/.vscode-server/bin/a21a160d630530476218b85db95b0fd2a8cd1230/vscode-remote-lock.tanglx.a21a160d630530476218b85db95b0fd2a8cd1230
Installing to /home/tanglx/.vscode-server/bin/a21a160d630530476218b85db95b0fd2a8cd1230...
2074f1407276%%1%%
Downloading with wget
Download complete
2074f1407276%%2%%
tar --version:
tar (GNU tar) 1.29
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

#####################省略N行########################

2074f1407276: start
SSH_AUTH_SOCK====
DISPLAY====
webUiAccessToken====
listeningOn==40795==
osReleaseId==ubuntu==
arch==x86_64==
tmpDir==/run/user/1000==
platform==linux==
unpackResult==success==
didLocalDownload==0==
downloadTime==156666==
installTime==2449==
extInstallTime====
serverStartTime==287==
connectionToken==b064b0e4-0f5c-4c26-9c81-e9419c37bee1==
2074f1407276: end

且在完成之后,查看目标机器上的会多一个文件夹:~/.vscode-server,该文件夹是vscode的服务端程序。查看vscode界面,在左下角会有一个连接的标识,表示连接成功。其详情如下所示:

 Step8:经过上述步骤,我们已经完成了需求1,即vscode可以通过SSH连接到远程机器了。现在需要使用vscode打开一个远程机器的终端,并且进行一些测试操作。在已经连接成功的情况下,点击命令菜单“终端”--“新建终端”,即可得到一个远程终端。我在终端里输入了一个“ip a”命令,表示该终端已经可用,具体如下图所示:

Step9:还剩最后一个需求3,需要对远程机器的文件进行自由访问。 我们这里使用上一步骤的终端在用户目录下创建一个子目录MyPrj1,具体如下:

点击左侧菜单栏的“资源管理器”--“打开文件”,然后在命令提示栏中输入/home/tanglx/MyDir1,点击确定,然后输入密码,就可以获取对指定远程文件夹的访问项,具体如下图所示:

 打开成功后,在“资源管理器”窗口中,会有一个MYDIR1的项,我们使用旁边的“新建文件”,“新建文件夹”,在该目录下创建一个src目录,并且在src下创建一个main.cpp。创建完成之后的详情如下:

 Step10:上一步骤,实现了需求3,即对远程文件的访问权限。此一步将讲解实现需求4。首先讲如何进行远程文件下载,我们在本机新建一个文件夹“F:\Remote_MyDir1”,右键点击vscode资源管理器中的main.cpp,选择“下载”,然后指定下载到文件夹“F:\Remote_MyDir1”,点击确定之后,就会发现main.cpp已经被下载到我们指定的目录中了,具体如下:

现在下载远程文件OK了,那如何上传呢?我们在刚才创建的本机文件夹 “F:\Remote_MyDir1”中新建一个文件Test.c,然后点击Test.c文件,拖拽到vscode资源管理器中的src下,Test.c便到了远程服务器src目录下。

对于文件夹的上传/下载操作,和文件类似。至此,需求4变已实现了。

后话:

后话段主要记录一些初步了解时候的花絮,如果按照上述步骤,已经实现所有需求,则后话可以不观看了。但是如果,前面的事情遇阻或者不顺利,或许此处会给你帮助。

花絮1:

请跳过此行阅读:搜索标记(Recommends: ssh-import-id but it is not going to be installed)

安装远程机器openssh-server遇阻,我在安装时候报错如下:

上述错误意思是,需要安装的openssh-server依赖的openssh-client(=1:7.6p1-4),与本机上自带的openssh-client不同,故而需要安装相同的openssh-client版本,执行下列命令,安装相应版本之后,再来安装openssh-server才行。

花絮2:

在Step7中,使用vscode连接远程机器时候,最好保持远程机器可以访问Internet。因为在第一次连接时候,远程机器会下载安装vscode-server,并且将文件放到~/.vscode-server/文件夹中。如果远程机器无法访问外网,那么只能用其他方式,拷贝对应的文件到远程机器进行安装。具体如下:

I.查看本地vscode的提交编号,在vscode界面点击“帮助”--“关于”,会弹出一个对话框,点击复制,获取到对应的提交编号。

II:到下列地址下载对应的vscode-server的包

https://update.code.visualstudio.com/commit:a21a160d630530476218b85db95b0fd2a8cd1230/server-linux-x64/stablex

需要注意的是链接中“commit:”后的内容需要时步骤I中获取的提交编号。我这里填写的是我本机vscode的提交码,看官需要使用自己在步骤I中获取的提交编号。

III:将下载的包vscode-server-linux-x64.tar.gz解压到目录

~/.vscode-server/bin/a21a160d630530476218b85db95b0fd2a8cd1230/

如果不存在该目录,则需要创建,这里需要注意的是,bin的子目录名称,也是使用的在步骤I中获取的提交编号,我这里填写的是我本机vscode的提交码,看官需要使用自己在步骤I中获取的提交编号。

花絮3:

我之前未接触过vscode,所以我觉得作为一个新人的第一视角是珍贵的,是更利于各位看官初次接触vscode的。但是在我写这篇文章时候,已然已经配置好了很多东西,但是为了那种新人的第一视角,我还是将有些东西卸载,或者重装了,以给各位看官提供那种新人的第一视角。

但是,在我使用vscode连接远程机器时候,出现了如下问题:

请跳过本行阅读,搜索标记(REMOTE HOST IDENTIFICATION HAS CHANGED!) 

经过在网上查找答案,发现是由于我之前使用本机连接过另一台虚拟机,其用户名,IP和现在这台虚拟机一模一样,而本机SSH,会保留之前回话的密钥。解决办法是在SSH目录,使用命令行执行

ssh-keygen -R $server_ip

该命令的本意是重置SSH缓存中指定IP的密钥。

我本地执行示意图如下:

在执行栏密钥缓存清理之后,再进行连接,会出现如下输出,只需要输入yes,然后再输入密码即可正常连接。

同理,如果客户端改变了(机器改变了,但是用户名和ip未发生变化),出现连接问题,服务端也可以使用该命令来对服务端缓存的对应IP的密钥来进行重置。

花絮4:

ubuntu18.04中,用户名一定是小写的。

我本来创建的虚拟机,使用的用户名是大写字母(Tanglx)开头。结果导致我在使用ssh连接ubuntu时候一直写的是大写:

ssh Tanglx@192.168.0.105

这就导致SSH一直验证不过。。。搞了好久,突然发现用户名貌似只能小写。

使用 ssh tanglx@192.168.0.105

就可以过了。

这个事,我搞了2,3个小时。。。无语。。。所以谨此记下。。

### 如何在 Ubuntu 18.04 上设置 Visual Studio Code 实现远程开发 要在 Ubuntu 18.04 上配置 Visual Studio Code (VSCode) 进行远程开发,可以通过以下方式实现完整的环境搭建。 #### 安装 VSCode 首先,在 Ubuntu 18.04 上安装 Visual Studio Code 是必要的。可以按照官方推荐的方法完成安装[^2]: 1. 打开终端并运行以下命令来更新软件包索引: ```bash sudo apt update ``` 2. 添加 Microsoft 的 GPG 密钥以验证软件包的真实性: ```bash wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - ``` 3. 启用适用于 Debian 和 Ubuntu 的 Visual Studio Code 软件源: ```bash sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" ``` 4. 更新 APT 缓存并安装 VSCode: ```bash sudo apt install code ``` 此时,Visual Studio Code 应该已经成功安装到您的系统中。 --- #### 安装 Remote Development 插件 为了支持远程开发功能,需要安装 **Remote Development** 插件集合。此插件由微软提供,能够帮助开发者通过 SSH 或其他协议连接远程服务器进行开发工作。 1. 打开已安装的 VSCode。 2. 使用快捷键 `Ctrl+Shift+X` 打开扩展市场。 3. 搜索 “Remote Development”,找到由 Microsoft 提供的插件集,并点击安装按钮。 4. 如果您希望模拟本地机器上的远程开发体验,则可以选择附加组件中的 **WSL** 支持(如果适用)或者直接启用 **SSH** 功能。 --- #### 配置 SSH 访问权限 对于基于云或物理机的目标设备,通常采用 SSH 协议建立安全连接。以下是具体操作步骤: 1. 确保目标主机上启用了 SSH 服务。如果没有,请执行以下命令启动它: ```bash sudo systemctl start sshd ``` 2. 在客户端计算机上测试与目标主机之间的连通性。假设目标 IP 地址为 `192.168.x.x`,则可尝试如下指令: ```bash ssh username@192.168.x.x ``` 替换其中的用户名 (`username`) 及实际地址部分。 3. 返回至 VSCode 主界面,按下组合键 `F1` 或者 `Ctrl+Shift+P` 呼叫命令面板;输入关键词 `"remote"` 并选择选项:“Remote-SSH: Connect to Host...”。 4. 输入目标主机的信息字符串形式如前所述样例所示——即包含完整路径名以及端口号等细节描述内容。 5. 成功链接之后,您可以克隆项目仓库或将现有文件夹拖放到左侧资源管理器窗口下新建标签页里继续编辑流程。 --- #### 设置 C++ 开发环境(可选) 如果您计划利用 VSCode 来编写和调试 C++ 程序,还需要额外准备一些工具链和服务[^4]: 1. 安装 GCC/G++ 编译器及其关联依赖项: ```bash sudo apt-get install build-essential gdb ``` 2. 下载并激活名为“C/C++ IntelliSense”的官方插件,这有助于语法高亮显示、自动补全等功能增强用户体验感。 3. 创建 launch.json 文件定义断点追踪行为模式参数设定等等个性化需求调整方案说明文档参见官网指南页面链接访问查阅更多详情资料参考文献列表编号对应位置处标注清楚标明出处来源依据标准格式化处理完毕结束全文叙述过程总结归纳要点突出重点强调核心价值体现专业水准形象树立权威地位巩固提升影响力扩大传播范围促进交流互动增进理解共识达成合作意向推动事业发展进步共同成长共赢未来愿景展望美好前景规划宏伟蓝图绘制精彩画卷描绘绚丽色彩渲染浓厚氛围营造和谐局面构建稳定结构奠定坚实基础筑牢根基支撑大厦巍然屹立千年不倒万古流芳百世留香千秋传颂永垂不朽! ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值