VScode SSH远程连接Ubuntu(通过SSH密钥对的方式)

        我们都知道在VScode上通过SSH插件的方式可以远程连接到虚拟机的Ubuntu系统,这样开发者就可以在Windows下的Vscode编译器下直接远程连接Ubuntu,这种方式是 “用 Windows 的便捷性操作 Linux 的专业性”—— 既保留了Windows系统的易用性和VS Code的强大功能,又能充分利用 Ubuntu(Linux)在开发、部署场景中的优势,是跨系统开发的高效解决方案。

        常规的使用SSH Remote插件远程连接Ubuntu使用密钥认证的方式,从使用便捷性来说,每次登录都需手动输入密码,无法完全自动化;如果存在多台服务器,每台服务器需单独设置并记忆密码,管理成本高;从安全性的角度来考虑,如果采用弱密码,每次登录需要输入,存在被截获并破解的可能;而且如果生产过程中需要通过脚本完成定时的自动化任务,通过SSH密钥对的方式无需进行交互登录,毕竟脚本无法自动输入密码。

说人话就是每次重新连接不需要我们手动输入密码,爽~

那这种又安全又高效又支持自动化的连接方式是如何实现的呢?

一、 准备工作

1. 确保 Ubuntu 虚拟机已安装 SSH 服务

在 Ubuntu 虚拟机中打开终端,执行以下命令安装并启动 SSH 服务:

# 安装 OpenSSH 服务器
sudo apt update
sudo apt install openssh-server# 启动 SSH 服务
sudo service ssh start# 设置开机自启
sudo systemctl enable ssh

我这里已经安装过openssh-server了,所以我这里显示“openssh-server is already the newest version (1:8.2p1-4ubuntu0.13).”

2. 查看ubuntu的IP地址

为了方便使用,虚拟机最好是设置为桥接模式而非NAT模式。如果不知道自己是什么模式可以通过查看ubuntu网卡的IP地址与主机的IP地址是否在同一网段来进行简单的判断。

桥接模式只需要保证SSH默认端口22开放,主机即可直接通过虚拟机 IP 连接;而NAT模式需额外配置端口转发才能实现 SSH 连接。

桥接模式NAT 模式
IP 网段与主机同网段(如 192.168.x.x私有网段(如 10.0.2.x),与主机隔离
SSH 连接方式直接通过虚拟机 IP 连接(ssh user@虚拟机IP需端口转发,通过 主机IP:映射端口 连接(如 ssh user@主机IP -p 2222
网络可达性主机、局域网设备均可直接访问仅主机可通过端口转发访问,局域网其他设备默认不可达
IP 稳定性可能随路由器 DHCP 动态变化(建议设静态 IP)由虚拟机软件分配,稳定性高(除非重启 NAT 服务)
配置复杂度简单(无需额外设置,确保防火墙开放 22 端口)需手动配置端口转发规则,否则无法连接

在命令行终端输入:

#查看网络接口状态
ifconfig

即可查看到ubuntu的网卡对应的IP地址信息:

3.在Windows上的VScode插件市场中安装SSH插件

在插件市场中搜索关键字SSH,跳出来的第一个插件就是我们需要的Remote SSH插件,我这里已经安装过了,没有安装该插件的右下角应该是"Install"按钮。

二、确保网络连接状态

最简单的测试网络连接状态的方式就是互相ping一下,在第一步中我们已经拿到了Ubuntu的IP地址,类似的我们可以得到Windows的IP地址。

在Windows下使用快捷键Ctrl+x,选择"终端管理员"即可打开Windows下的命令行工具PowerShell

我们在命令行中输入ipconfig即可查询到本机的IP地址。(Windows下的查询命令需要与ubuntu下的ifconfig做区分)

#查看网络接口状态(Windows)
ipconfig

拿到ip地址后,我们可以在两端分别ping一下,看是否能ping通

这样就说明我们网络连接没问题了,这也是我们所有ssh远程连接的基础。

三、 在配置SSH连接(通过SSH密钥对)

1. 生成SSH密钥对

  在 Windows PowerShell 中执行:

ssh-keygen -t rsa -b 4096

  按提示连续回车,默认将密钥对生成在 C:\Users\你的用户名\.ssh\id_rsa 和 id_rsa.pub

我这里已经生成过SSH密钥了,所以会提示是否需要覆盖。

接下来是将生成的密钥通过ssh发送至远程服务器的 ~/.ssh/authorized_keys 文件下,我们在PowerShell中输入命令:

# 读取本地公钥内容
$publicKey = Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"# 使用 SSH 将公钥追加到远程服务器
ssh 用户名@ubuntu ip地址 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '$publicKey' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

第一次通过SSH发送会需要我们输入ubuntu的密码。(因为我们SSH密钥对还没配置好)

四、 配置VScode的SSH连接

打开Windows下的VScode,使用快捷键Ctrl+Shift+P打开上面的搜索框,输入SSH,选择

"Open SSH Configuration File"->第一个配置文件

可以参照我的配置文件,将对应项修改为自己的服务器配置即可。

Host 10.55.131.104              # 定义一个名为"10.55.131.104"的主机别名(可自定义,建议用 IP 或域名)HostName 10.55.131.104        # 指定实际连接的远程服务器 IP 地址或域名User kevin                    # 连接时使用的用户名(远程服务器的登录账号)Port 22                       # 远程服务器 SSH 服务监听的端口(默认 22)IdentityFile ~/.ssh/id_rsa    # 指定用于身份验证的私钥文件路径(SSH 密钥认证)

点击刷新就会出现我们文件所配置的SSH服务了。

后续我们想要通过SSH远程连接ubuntu服务器可以直接点击箭头,就会自动连接上服务器,而不需要我们输入密码了!

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

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

相关文章

学术绘图(各种神经网络)

23种神经网络设计&可视化工具汇总 下面做简要罗列,具体请看相关链接 1.draw_convnet Github: https://github.com/gwding/draw_convnet​ star 数量:1.7k​ 这个工具最后一次更新是2018年的时候,一个Python脚本来绘制卷积神经网络的工…

Redis的高可用性与集群架构

Redis的高可用性与集群架构 引言:解释高可用性的重要性及Redis如何实现主从复制(Replication) 原理:异步复制,主从数据同步配置方法优缺点分析 哨兵模式(Sentinel) 功能:监控、通知、…

TCP的连接

TCP 三次握手过程是怎样的?TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图:一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口&…

Excel的学习

一、熟悉界面 1.功能区 点击“视图”,点击冻结窗格,选择目标行 2.表格区 3.自定义功能区 在上面的空白编辑栏处,右键选择自定义功能区 4.数据输入规范 (1)格式不统一(日期格式不规范,姓名乱加空格,乱合并单元格) 姓名对齐:右键选择编辑单元格格式,选择对齐,…

论文阅读:HybridTrack: A Hybrid Approach for Robust Multi-Object Tracking

论文地址:2501.01275v2 代码地址:GitHub - leandro-svg/HybridTrack: [RA-L25/ICRA26] HybridTrack: A Hybrid Approach for Robust Multi-Object Tracking 前言 多目标跟踪旨在在帧间检测和关联所有所需的目标。大多数方法通过明确或隐式地利用强大的线索(即空间和外观信…

EtherCAT开源主站 SOEM 2.0 最新源码在嵌入式 Linux 下的移植与编译

EtherCAT 作为工业自动化领域的主流现场总线协议,因其高实时性和高带宽被广泛应用。而 SOEM(Simple Open EtherCAT Master)则是开源社区中最受欢迎的 EtherCAT 主站协议栈之一。本文将以 SOEM 2.0 最新源码为例,详细介绍其在嵌入式…

面试150 填充每个节点的下一个右侧节点指针Ⅱ

思路 采用层序遍历的方式来连接二叉树中同一层的节点。首先将根节点加入队列,然后按层处理节点:每一层依次从队列中取出节点,并将其 next 指针指向该层中的下一个节点(即队列中的下一个节点);若是该层最后一…

Windows 本地 使用mkcert 配置HTTPS 自签名证书

🧩 场景假设 项目本地运行或通过本地 web 服务器(如 Nginx、http-server、vite)访问 假设域名为 myadmin.local(可以任意命名) 步骤 1:安装 mkcert 下载 mkcert: 访问 https://github.com/Fil…

vue3 ref vs reactive值的修改

ref vs reactive reactive 定义的响应式对象不能直接整体修改(即obj1obj2),如果想要修改,可以使用 Object.assign(obj1,obj2) 上述赋值是浅拷贝,对象地址不变,属性值被修改了浅拷贝:创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性值是基本类型…

【Datawhale AI 夏令营】 用AI做带货视频评论分析(一)

引言 以讯飞「基于带货视频评论的用户洞察挑战赛」的赛事项目为背景,将电商直播带货视频的碎片化用户评论转化为可量化的商业洞察信息。其实本质上在于利用自然语言处理、机器学习或者大模型技术,从海量的文本数据中提取有价值的商业洞察。 主要涉及以下…

Vue中的render()函数

在 Vue 中&#xff0c;render() 是一个用于手动编写组件渲染逻辑的方法&#xff0c;它直接返回虚拟节点&#xff08;VNode&#xff09;&#xff0c;替代模板语法&#xff08;<template>&#xff09;来描述组件的 UI 结构。以下是关于 render() 方法的详细解析&#xff1a…

板凳-------Mysql cookbook学习 (十一--------9)

13.2 分组描述统计 mysql> select age, count(score) as n,-> sum(score) as sum,-> min(score) as minimum,-> max(score) as maximum,-> avg(score) as mean,-> stddev_samp(score) as std. dev.,-> var_samp(score) as variance-> from testscore-&…

编写产品需求文档:黄历日历小程序

整理产品需求文档&#xff1a;黄历日历小程序版本&#xff1a;1.0 更新时间&#xff1a;2025-7-9一、文档概述1.1 产品背景开发一款融合传统黄历文化的日历工具&#xff0c;提供每日吉凶查询、神煞展示和个人运势分析功能。1.2 目标用户关注传统历法的中老年群体婚嫁/搬家等需要…

Spring Boot + MyBatis 实现用户登录功能详解(基础)

一、项目概述做了几个项目发现有人问到怎么使用springbootHTMLjsCSS开发一个项目呢所以本文将介绍如何使用Spring Boot和MyBatis实现一个完整的用户登录功能。系统包含前端登录页面、后端控制器、服务层、数据访问层以及数据库交互。二、技术栈Spring Boot 2.xMyBatis 持久层框…

adb 简介与常用命令

1. adb 简介adb 的全称为 Android Debug Bridge&#xff0c;就是起到调试桥的作用。借助 adb 工具&#xff0c;我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作&#xff0c;如安装软件、系统升级、运行 shell 命令等等。其实简而言说&#xff0c;adb 就是连接 And…

阿里云-跨账号同步OSS Bucket

说明 阿里云A账号的OSS BUCKET同步到B账号的指定OSS BUCKET。 账号Bucket NamesRAM角色A{源buctket}OSS-SYNCERB{目标buctket} 步骤 在阿里云A,B账号分别建上表buckets, 最好是相同地域的在A号-RAM控制台建立角色OSS-SYNCER&#xff0c;并赋权AliyunOSSFullAccess&#xff…

uniapp小程序无感刷新token

request.js // request.js import {getApptoken,getStoredApptoken } from ./tokenRequest // 从合并模块导入// 全局配置 const MAX_RETRIES 1 // 最大重试次数 const baseURL https://your-api.com// 请求队列和刷新状态 let requestsQueue [] let isRefreshing false// …

MySQL优化高手笔记

语雀完整版&#xff1a;https://www.yuque.com/g/mingrun/embiys/dv3btw/collaborator/join?tokenzMBwPzSMfSGINLuv&sourcedoc_collaborator# 《MySQL优化高手笔记》MySQL优化高手一、MySQL架构01 天天写CRUD,你知道你的系统是如何跟MySQL打交道的吗通过驱动连接数据库&am…

Git 详解:从概念,常用命令,版本回退到工作流

本文将从 Git 的核心概念讲起&#xff0c;详细介绍常用命令、各阶段版本回退、分支控制以及企业内常见的 Git 工作流。 Git 与 GitHub 简介 Git 简介 Git 是一个开源的分布式版本控制系统&#xff0c;由 Linus Torvalds 于 2005 年开发。它与集中式版本控制系统&#xff08;…