VS Code 远程连接 SSH 服务器

文章目录

  • 一、安装 Remote - SSH 扩展并连接远程主机
  • 二、免密连接远程主机
    • 1. 生成 SSH 密钥对
    • 2. 将公钥复制到远程服务器
    • 3. 配置 SSH 客服端
    • 4. 连接测试

在这里插入图片描述

随着技术的不断迭代更新,在 Linux 系统中使用 Vim、nano 等基于 Shell 终端的编辑器(我曾经也是个 vimer,但是 VS Code 实在太香了),已经很难适应当下的开发效率。因此大多数开发者开始使用 VS Code 远程连接 Linux 系统来解决编程效率的问题,VS Code 本身也是个优秀的代码编辑器,可以安装很多插件来扩展功能,其中就有 SSH 工具,远程连接到 Linux 系统,可以说就是在 VS Code 上编辑代码、编译代码、运行程序,基本就是一条龙服务。

本篇将以 Windows 系统下的 VS Code 作为 SSH 客服端,连接远程的 Ubuntu 系统。前提条件是 Ubuntu 主机已安装了 SSH 服务组件,相关内容可查阅博客《基于 Ubuntu22.04 安装 SSH 服务》。


一、安装 Remote - SSH 扩展并连接远程主机

打开 VS Code,点击左侧的扩展图标(或使用快捷键 Ctrl+Shift+X),在搜索框中输入 “SSH”,可以看到官方提供的 “Remote - SSH” 扩展,点击 “Install” 安装。

在这里插入图片描述

安装好插件后,左边的侧边栏上多一个远程连接的图标,点进去之后,出现 SSH 连接界面,点击小加号可以连接远程服务器。

在这里插入图片描述

点击小加号后,VS Code 上方的输入框会下弹出另一个输入框,这个输入框用于输入 SSH 的连接命令。

在这里插入图片描述

使用 ssh 命令连接到远程服务器,以下是命令的格式:

ssh username@remote_host
ssh -p port_number username@remote_host

第一行是默认端口为 22 的连接命令,第二行是自定义端口号,port_number 为端口号,username 为用户名,remote_host 为 IP 地址。下面的例子是 SSH 连接我的 Ubuntu 主机的命令(端口号被我修改为 2222):

ssh -p 2222 grayson@192.168.31.90

输入后回车执行, 会弹出选择更新配置文件,点击第一个路径即可。

在这里插入图片描述

然后软件的右下角会出现提示信息,点击 “Open Config” 打开配置文件。

在这里插入图片描述

确认配置文件没错的话,就可以保存关闭了。我这里把 Host 后面的内容改成了 Ubuntu,原先是显示 IP 地址。

在这里插入图片描述

简单的解释一下这段信息:

  • Host:这是一个用户定义的别名,用于指代远程主机。可以在在终端中执行 ssh 加上这个别名来代替替代 ssh username@remote_host
  • HostName:指定远程主机的实际地址或主机名。
  • Port:指定 SSH 连接使用的端口号。
  • User:指定连接到远程主机时使用的用户名。

一般这时候可以看到左边树状图中的 SSH 分支上,会多出一个 Ubuntu,如果没出现,可以点一下上面的刷新按钮。点击 Ubuntu 旁边的小窗口,就可以连接到 Ubuntu 了。

在这里插入图片描述

新弹窗中选择 “Linux”。

在这里插入图片描述

然后输入远程主机的密码并回车。

在这里插入图片描述

连接成功的话,右下角会出现如下图所示的字样。

在这里插入图片描述

点击旁边的小三角形,再点击 “ TERMINAL”,可以看到 Ubuntu 的终端界面,在这里可以使用命令行操作 Ubuntu。

在这里插入图片描述

二、免密连接远程主机

每次连接都需要输入密码有稍许麻烦,一台机器想要免密访问其他机器,需要把自己的公钥内容发送到别的机器的 authorized_keys 中,并在本机 config 文件中配置私钥文件位置。以下是实现免密码连接的一般步骤:

1. 生成 SSH 密钥对

在本地系统上,也就是 Windous 系统生成 SSH 密钥对。按组合键 Win + r 打开命令行运行窗口,输入 cmd 并回车打开 CMD 命令窗口。使用 ssh-keygen 命令生成密钥对。默认情况下,这将在 ~/.ssh/ 目录下(~ 是主目录,CMD 打开后默认就是主目录)生成一个公钥文件(id_rsa.pub)和一个私钥文件(id_rsa)。当然,我们可以选择在生成密钥对时为其指定不同的文件名,如下命令,-f 选项后面的 ./.ssh/id_rsa_windows 就包含了路径以及最后生成的密钥对名字。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ./.ssh/id_rsa_windows

上面的命令只有在 CMD 被打开时默认为主目录的时候才能使用,要保险一些的话,建议用下面的命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f C:\Users\<YourUsername>\.ssh\id_rsa_windows

其中的 <YourUsername> 是 Windows 的用户名。

如下图所示,我这里是输入了上一条命令,然后要输入密钥对的密码,我选择敲入两个回车跳过密码设置,毕竟不是做什么保密项目。如果密钥对生成了,会打印出一个图案,此时进入 .ssh 文件夹,可以看到密钥对已经生成。

在这里插入图片描述

[!CAUTION]

假如在多个平台上使用 SSH 连接到不同的远程服务器时,可能需要为每个平台生成和使用不同的密钥对。这是因为每个平台(例如,Windows、Linux、Mac)可能有不同的文件系统和密钥文件位置,同时在安全性的考虑下,不同平台上的密钥对最好是独立的。

2. 将公钥复制到远程服务器

将本地系统上生成的公钥文件内容复制到远程服务器的,要将公钥的内容追加到 authorized_keys 文件,发送到远程主机。

同样在 CMD 窗口使用 scp 命令把 id_rsa_windows.pud 拷贝到 Ubuntu 系统,具体命令如下(别什么都照抄,这个是我的远程主机和端口号):

scp -P 2222 ./.ssh/id_rsa_windows.pub garyson@192.168.31.90:~

回到 VS Code 上,点击侧边第一个图标,然后点击 “Open Folder”,这时中间的输入框就会弹出远程主机的主目录,直接点旁边的 “OK” 按钮,然后输入 Ubuntu 的密码回车。

在这里插入图片描述

随后的弹窗中先勾上 “Trust the authors of all files in the parent folder ‘home’”,然后再点 “Yes, I trust the authors”。

可以看到文件已经传过去了。

在这里插入图片描述

然后在终端窗口输入 cat id_rsa_windows.pub >> ./.ssh/authorized_keys, 把公钥的内容复制到 .ssh/authorized_keys 里面,

在这里插入图片描述

然后在终端输入下面的命令,修改这两个文件的权限。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

如果没有 .ssh 这个文件夹,可以手动创建一下。

3. 配置 SSH 客服端

修改 Ubuntu 系统/etc/ssh/sshd_config配置文件,添加上以下配置信息:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

完成以上步骤后,重启SSH服务以应用更改:

sudo systemctl restart sshd

4. 连接测试

关掉 VS Code 重新打开,其实已经是免密登录了,因为打开 VS Code 之后,左下角出现了 “SSH: Ubuntu”,说明已经自动脸上了 Ubuntu 主机了。

在这里插入图片描述

我们点击这个蓝色的图标,然后在中间弹出的菜单中选择 Connext to Host…

在这里插入图片描述

选择 Ubuntu。

在这里插入图片描述

这时就不需要输入密码,也可以连接了,同样的方法适用于任何 Linux 设置。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

⚡OWASF 十大 API 安全问题盘点

OWASP 是一个致力于提升 Web 应用程序安全的国际非营利组织&#xff0c;其核心原则之一是公开、免费地提供所有相关资料&#xff0c;方便大众在其官方网站上轻松查阅&#xff0c;助力任何人提升 Web 应用程序的安全性。该组织提供的资料涵盖文档、工具、视频以及论坛等多种形式…

【PowerJob】从源码编译到k8s部署

前言 虽然PowerJob官方说支持JPA各种数据源&#xff0c;但在PG数据库的兼容性上&#xff0c;确实存在小问题&#xff0c;issue也有相关原理描述&#xff0c;官方采用的优雅方式并未真正解决问题&#xff0c;因为只解决了从Lob字段读取的时候&#xff0c;自动建表的时候还是会生…

List集合中对asList的使用

List<String> sArrays.asList(“qwe”,”cvb”,”mnb”); List<String> s1s.subList(1,2); System.out.Pintln(“s”);//输出结果&#xff1a;[qwe,cvb,mnb] System.out.Pintln(“s1”);//输出结果&#xff1a;[cvb] s1.add(“123qwe”);//报错&#xff1a;java…

【机器学习300问】82、RMSprop梯度下降优化算法的原理是什么?

RMSprop&#xff0c;全称Root Mean Square Propagation&#xff0c;中文名称“均方根传播”算法。让我来举个例子给大家介绍一下它的原理&#xff01; 一、通过举例来感性认识 建议你第一次看下面的例子时忽略小括号里的内容&#xff0c;在看完本文当你对RMSprop有了一定理解时…

使用单片机的IO引脚直接驱动段码屏

使用单片机的IO引脚直接驱动段码屏,目的是为了降低成本。这种古老的应用,在低功耗产品中比较多见。 如:水表&#xff0c;燃气表等需要电池供电的产品。 下面纯属个人理解&#xff0c;未经测试。 1/3Duty表示LCD共有3个COM引脚,分别占显示周期的1/3 1/2BIAS表示电压0和VCC 1、…

通义千问2.5中文能力地表最强

随着人工智能技术的不断进步&#xff0c;智能问答系统已成为人们日常生活中不可或缺的一部分。阿里巴巴集团作为全球领先的科技公司&#xff0c;一直致力于AI领域的研发和创新。最近&#xff0c;阿里巴巴发布了其最新的智能问答系统——通义千问2.5。 通义千问2.5在AI问答领域…

企业签名分发跟应用商城分发有什么区别

企业签名分发是移动应用开发者在应用程序发布前测试、内部分发和特定的受众群体分发等方面比较常用的一种工具。那对于应用商城分发有啥区别&#xff0c;下面简单的探讨一下。 独立分发能力 通过企业签名分发开发者可以自己决定应用程序的发布时间和方式&#xff0c;不用受应…

真驱鸟农业专用插电款驱鸟器,防喜鹊、麻雀各种鸟类

成年喜鹊的栖息地非常多样化&#xff0c;它们常常在人类活动的区域出没&#xff0c;喜欢把鸟巢建在民宅旁边的大树上、旷野的高树上或者电线塔杆上。白天&#xff0c;它们会飞到农田等开阔的地方觅食&#xff0c;到了傍晚则会返回巢内栖息。 喜鹊食性杂&#xff0c;它们的食物组…

【Linux】编写一个简易的shell

思维导图 学习目标 将简易的shell代码进行编写。 一、阐述shell的基本思路 在进程程序替换中&#xff0c;我们可以将一个指令交给子进程&#xff0c;让子进程去完成这个指令。如果这个命令是一个内建命令&#xff0c;我们需要将这个命令交给bash进行处理。 大致思路是&#xf…

【更具吸引力的回答】Java中final、finally、finalize的区别(二)

当谈到Java中的final、finally和finalize关键字时&#xff0c;它们各自在编程中扮演着不同的角色。下面我将从您提出的几个方面来详细解释它们之间的区别&#xff1a; 1. final 概念与用途&#xff1a;final关键字在Java中用于表示不可变性。它可以修饰类、方法和变量&#x…

在CentOS 7服务器及Windows 10客户端间建立并配置NFS服务

在CentOS 7服务器及Windows 10客户端间建立并配置NFS服务 引言 网络文件系统(Network File System)&#xff0c;简称NFS&#xff0c;是一种分布式文件系统协议。它允许网络上的客户端机器像访问本地磁盘文件一样&#xff0c;通过网络访问服务器上的文件。在某些特定的业务场景中…

从drugbank提取药物对应的靶点和基因信息

DrugBank是一个综合性的在线数据库,它提供了关于药物的详细化学、药理、药代动力学和药物-药物相互作用的信息。这个数据库是一个宝贵的资源,广泛用于药物研究、药理学、毒理学、药物设计和个性化医疗等领域。 以下是DrugBank的一些主要特点和用途: 药物信息:DrugBank提供了…

HTTP/1.0、HTTP/1.1、HTTP/2.0区别

文章目录 区别HTTP/1.0HTTP/1.11. 持久连接&#xff08;长连接&#xff09;2. 管道化3. Host头字段4. 分块传输编码5. 缓存机制6. 请求方法 HTTP/2.01. 二进制分帧2. 多路复用3. 服务器推送4. 优先级设置5. 头信息压缩6. 安全性7. 流量控制 区别 特性HTTP/1.0HTTP/1.1HTTP/2.0…

【笔试训练】day23

一、打怪 思路 由于是先手攻击&#xff0c;如果一次攻击就能杀死小怪&#xff0c;那么说明可以为无限杀小怪。 再计算杀一只小怪要扣多少血就好了&#xff0c;再用总生命值去除这个扣血量&#xff0c;得到的就是最多杀死小怪的数量。注意&#xff0c;由于最后一定要活下来&am…

博客系统问题

1.数据库相关的问题&#xff0c;包括定义表的结构、创建数据库表、增删改查操作的实现&#xff1a; Flask程序中&#xff0c;使用了ORM(Object Relation Mapping, 对象关系映射)这种思想来定义实体类并据此创建数据库表。 创建&#xff1a;首先是在代码中定义python类&#xf…

React面试经验2

1.执行顺序题 onClick () > {//athis.setState({num: this.state.num 1,})console.log(1:,this.state.num);//bthis.setState({num: this.state.num 1,})console.log(2:,this.state.num);setTimeout(() > {//cthis.setState({num: this.state.num 1,});console.log(…

将矩阵按对角线排序(Lc1329)——排序

矩阵对角线 是一条从矩阵最上面行或者最左侧列中的某个元素开始的对角线&#xff0c;沿右下方向一直到矩阵末尾的元素。例如&#xff0c;矩阵 mat 有 6 行 3 列&#xff0c;从 mat[2][0] 开始的 矩阵对角线 将会经过 mat[2][0]、mat[3][1] 和 mat[4][2] 。 给你一个 m * n 的整…

DevEco:智能、灵活、实时的集成开发环境

引言 前端性能是一个老生常谈的话题了&#xff0c;它不单单是一个技术概念&#xff0c;而是用户体验中非常重要的一环。通常在一些面向用户的产品中它直接影响了用户转化率、粘性等重要指标。 那么是不是不在乎转化率的中后台产品就可以不在乎性能了&#xff1f;显然不是&…

API接口开发实现一键智能化自动抓取电商平台商品评论数据支持高并发免费接入示例

为了实现一键智能化自动抓取电商平台商品评论数据可支持高并发免费接入&#xff0c;你可以使用Python编程语言和相关库&#xff08;如requests、BeautifulSoup等&#xff09;来开发一个API接口&#xff0c;也可以使用封装好的api接口获取&#xff0c;注册一个api账号获取key和s…

超详细的胎教级Stable Diffusion使用教程(一)

这套课程分为五节课&#xff0c;会系统性的介绍sd的全部功能和实操案例&#xff0c;让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion&#xff0c;它究竟有多强大&#xff1f; 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…