VS Code 远程连接 SSH 服务器

本文详细介绍了如何在Windows系统中使用VSCode的Remote-SSH插件,通过生成SSH密钥对、配置SSH客户端,实现免密连接远程Ubuntu系统,包括安装扩展、连接流程、免密策略和配置SSH服务。

随着技术的不断迭代更新,在 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 设置。

在这里插入图片描述

### 配置 VS Code 连接远程服务器 #### 安装 Remote - SSH 扩展 为了实现通过 VS Code远程服务器的操作,需先安装名为 "Remote - SSH" 的扩展。此扩展允许用户利用 SSH 协议安全地连接远程机器,并如同本地环境一般流畅操作远端文件与项目[^2]。 #### 创建 SSH 密钥对 对于希望简化登录流程以及提升安全性的情况,建议创建一对 SSH 秘钥用于身份验证。具体做法是在客户端执行命令 `ssh-keygen` 来生成私钥 (`id_rsa`) 和公钥 (`id_rsa.pub`) 文件,通常位于用户的 `.ssh` 目录内[^5]。 #### 设置无密码登录 为了让后续每次访问更加便捷高效,可采取措施使该SSH连接无需每次都输入密码。这一步骤涉及两方面工作: - **上传公钥到目标服务器**:借助工具如 `ssh-copy-id username@server_ip_address` 或手动编辑 `/home/username/.ssh/authorized_keys` 文件追加本机产生的公钥内容。 - **调整本地 SSH 客户端配置**:可以通过修改或新建 `$HOME/.ssh/config` 文件指定默认使用的用户名、主机别名等参数以便更方便快捷地建立链接。 #### 测试连接稳定性 一切准备就绪之后,尝试启动一次完整的连接过程以确认设置是否正确有效。如果一切正常,则可以在 VS Code 中看到状态栏左侧显示绿色指示灯表明当前处于已连通的状态;反之则应仔细排查上述各环节可能存在的问题直至排除所有障碍达成稳定可靠的通信链路[^3]。 #### 访问远程文件夹 一旦建立了成功的 SSH 会话,就可以轻松浏览并打开远程计算机上的任何位置作为新的工作区了。只需右键单击侧边栏中的“远程资源管理器”,选择相应的选项就能加载想要查看的内容[^4]。 ```bash # 示例:生成SSH密钥对 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ```
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Grayson Zheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值