1 前言

为了能在直接连接远程服务器编写代码,免去多次传输文件的麻烦,故用VScode配置了远程SSH开发环境

2 配置环境

客户端(本机):Windows

服务端:Ubuntu

3 操作步骤

2.1 安装SSH

本机和服务端都需安装SSH,在命令行端使用ssh验证安装,出现如下提示代表安装成功(Linux系统下同理)

image-20231025210351837

2.2 VSCode安装SSH插件

VSCode插件应用商店搜索Remote-SSH并安装

image-20231025210637975

安装完后侧边栏会显示对应图标

image-20231025210841608

2.3 秘钥配置

ssh-keygen工具生成私钥-公钥密钥对,其中私钥放客户端,公钥放服务端,即可实现免密登录

2.3.1 客户端生成密钥对

在客户端生成密钥对,其中"youremail@example.com"需替换为自己的邮箱

完成这一步后可以在C:\Users\user_name\.ssh(默认路径)下找到无后缀名的私钥和后缀名为.pub的公钥

1
2
# 参考Git生成密钥,非Git场景也可不添加-C注释,但还是建议添加以区分不同公钥
ssh-keygen -t rsa -C "youremail@example.com"

如果一个客户端想同时绑定多个Github账户实现免密登录的话,不同秘钥对的邮箱需不相同(建议和对应Github账户保持一致)

2.3.2 服务端配置公钥

将上一步生成的公钥添加至服务端根目录/.ssh/文件夹的authorized_keys文件中(也可以是当前用户的用户目录中,即~/.ssh),即可完成免密登录

公钥可视为客户端的ID卡,服务端只有客户端是谁,且客户端发送的经私钥加密的数据能被服务端正常解密才能正确建立连接

具体操作步骤如下:

  1. 将公钥文件id_rsa.pub放至.ssh目录(如目录不存在,用mkdir ~/.ssh/创建)

  2. 将公钥文件内容写入authorized_keys

    1
    cat id_rsa.pub > authorized_keys
  3. 如有多份公钥,假设现在有客户端2也需免密登录服务端,客户端2的公钥为id_rsa_2.pub,那么只需用cat >>指令将id_rsa_2.pub的内容追加写入authorized_keys即可。追加写入后再次打开authorized_keys文件可以看到每份公钥会以换行符的形式分隔

    1
    cat id_rsa_2.pub >> authorized_keys

至此服务端配置完毕,需要注意的是,服务端仅用authorized_keys进行验证,所以公钥内容追加至authorized_keys后可以不再保留

2.3.3 VSCode配置SSH

按下图所示在客户端(本机)添加SSH连接的配置文件,其中root为登录用户名,1.1.1.1为服务端的IP地址

image-20231025213445827

按回车键后会在客户端(本机)的.ssh文件夹中生成配置文件config

image-20231025213717077

各配置项含义如下:

Host <远程主机名称> HostName <远程主机IP> User <用户名> Port <ssh端口,默认22> IdentityFile <本机SSH私钥路径> ForwardAgent yes <VSCode 自己添加的,不用管>

也可按上述规则添加多个SSH配置

2.3.4 进行SSH连接

重启VSCode(可能有缓存,不重启的话无法显示新添加的配置信息),可以看到配置信息已经出现在了列表里,可点击右侧两个按钮分别在当前窗口/新窗口建立连接。之后就可以愉快地码代码啦~

image-20231025214107855

如果有给私钥配置密码,那么每次连接的时候仍需输入私钥的密码

4 参考资料

知乎:VSCode使用Remote SSH连接远程服务器