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

发布于:2025-07-10 ⋅ 阅读:(33) ⋅ 点赞:(0)

        我们都知道在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服务器可以直接点击箭头,就会自动连接上服务器,而不需要我们输入密码了!


网站公告

今日签到

点亮在社区的每一天
去签到