平常情况下,在Win系统大多都是使用XShell或者MobaXterm来进行ssh的远程连接,但是前段时间给自己更换为Mac为主要电脑后,发现在mac上同样也有非图形界面连接的electerm可以进行ssh连接,但是通常情况下,想进行代码调试和项目管理都不是非常方便。

个人平常经常使用VScode,发现VScode有一个插件,可以直接远程进行项目管理并非常方便的进行代码编写和调试,以下为主要的连接记录。插件名称为Remote-SSH,是微软主导开发的插件。

本地环境: MacOS Sequoia 15.6.1

远程环境: Ubuntu22.04

软件: VScode

远程连接过程

安装插件

在扩展商店中查找:Remote-SSH插件,然后点击安装,等待安装完成。

安装完成后,在左侧的竖向菜单栏中会出现远程资源管理器的按钮,点击后可以进入查看远程资源管理器,点击SSH后面的➕进行新建连接。

远程连接及设置

在上方弹出的命令框中输入:ssh name@ip,name是你服务器的用户名,如果没有创建用户则填root,ip是你的服务器ip地址。

例如,我连接的是本电脑的虚拟机,虚拟机对应的ip是10.211.55.4,用户名是parallels,那么这里就填入

s

如果想指定特定的端口进行连接,则在ssh之后增加 -p 指令带端口号即可针对指定端口连接,默认情况下端口可以不用填写,默认22。

ssh -p 22 parallels@10.211.55.4

回车后会弹出更新连接配置文件,选择自己想要的路径,默认第一个,会自动生成一个config文件。

可以找到对应的路径,查看该config文件。内容如下

Host: 这是一个用户定义的别名,用于指代远程主机。可以在在终端中执行 ssh 别名 替代ssh name@ip

HostName: 指定远程主机的实际地址或主机名。

Port: 指定 SSH 连接使用的端口号。

User: 指定连接到远程主机时使用的用户名。在这里,用户名是 parallels

在 config 文件配置完成并保存后,在VSCode的远程资源管理器中已经出现刚配置的远程服务器,此时点击红框按钮连接即可

VSCode会自动进行远程端的设置,窗口上方的中间位置会出现选择平台、输入密码设置,按照自己的情况填写即可

此时没有意外的话就可以连接上了远程服务器了

在整个连接过程中,没有出现任何错误,使用非常方便。

免密连接设置

通过以上连接方式进行连接的过程中,每次都会提示要输入密码才可以连接,我们知道ssh是支持使用密钥对来进行连接的。那么我们接下来进行密钥对的设置。

生成密钥对

我们可以使用命令ssh-keygen生成新的密钥对。你可以选择在生成密钥对时为其指定不同的文件名,使用 -f 命令加你希望命名的文件名

 # 在 Linux 和 Mac 上
 ssh-keygen -t rsa -b 2048 -f ~/.ssh/****
 ​
 # 在 Windows 上
 ssh-keygen -t rsa -b 2048 -f C:\Users\YourUsername\.ssh\****
 ​
 # 如果你只有单平台使用 ssh
 ssh-keygen

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

在终端输入指令回车后,会提示你输入该密钥对的密码,个人使用的话,不是非常重要的情况可以不用对私钥设置密码。如果是有比较高的隐私要求,建议还是进行密码设置。

连续回车后,即可获得密钥对如下图。

此时,你可以在对应的路径找到该密钥对。例如,我就可以在 /User/***/.ssh/ 文件夹下找到名字是 test 的密钥和 test.pub 的公钥。

添加公共密钥到远程服务器

将生成的公钥(test.pub)添加到你的远程连接服务器的authorized_keys 文件中,才能在之后使用对应的私钥进行连接。鉴于我们之前已经通过VScode进行了SSH的远程连接,我们可以通过VScode直接将公钥添加至服务器中。

在远程服务器上,authorized_keys 文件通常存储在用户的 .ssh 目录中。具体路径可能为 ~/.ssh/authorized_keys

如果你的.ssh目录或者 authorized_keys 文件不存在,你可以在服务器终端使用以下命令创建它:

 # 创建目录
 mkdir ~/.ssh
 # 进入目录
 cd ~/.ssh
 # 创建 authorized_keys 文件
 touch authorized_keys
 # 使用文本编辑器打开 authorized_keys 文件,并将你的公钥内容粘贴到其中
 nano authorized_keys
 # 保存并关闭文本编辑器。

使用VScode的远程资源管理器,连接你的远程服务器后,打开对应的文件下,并打开authorized_keys 文件。

然后在本地打开test.pub 文件,将里面的内容全部复制到远程服务器的authorized_keys 文件中,然后保存就可以了。

配置本地SSH使用私钥验证

将公钥添加到服务器后,最后一步就是配置本地的SSH,使用私钥进行连接。

打开刚才使用的SSH本地配置文件。在最后面添加配置 IdentityFile 私钥文件路径,用来指定连接该服务器时使用指定的私钥路径,我们刚才创建的私钥路径为 ~/.ssh/test

这样我们以后在连接这个服务器时就会默认使用私钥进行连接。