VSCode SSH设置免密登录

VSCode SSH设置免密登录

fanz Lv3

平时一直都是使用 VSCode 连服务器的,不过每次连接服务器、打开新的文件夹甚至刷新的时候都需要重新输入一遍密码,如果是同时连接多个不同的服务器,这体验可真是有够差劲的了。在网上查了资料发现,VSCode 是支持通过 RSA(勾起了当年上网安课的回忆 😂)秘钥登录的,这里做下记录。

1.生成密钥对(前提是已安装好 Git)

首先请确认电脑上已经成功安装好了 Git,首先检查一下C:\Users\用户名\.ssh文件夹,查看一下文件夹下是否包含 id_rsaid_rsa.pub
image.png

如果没有,那么打开git bash,输入如下命令生成 RSA 公钥和密钥(请使用自己 Github 账号绑定的邮箱):

1
ssh-keygen -t rsa -C “[email protected]

执行这个命令时,可能会让你填一些信息,其实不用填,直接 Enter 即可。命令执行结束之后,你就能在C:\Users\用户名\.ssh文件夹下看到公钥和私钥了。

2.上传公钥到服务器上

我们第一步得到的id_rsa.pub实际上就是公钥,而id_rsa是私钥。如何理解公钥和私钥的用法呢?简单来说,现在我有一幅画,然后我把这幅画直接放在银行大厅里,所有人都可以看见这幅画,但是大家都不知道这幅画表达的是什么意思,只有拿着解密卡(私钥)的我才能看懂这是什么意思。

上传公钥这里需要注意,你需要将id_rsa.pub的内容复制到~/.ssh/authorized_keys文件中。

Note

路径开头的这个~是什么意思?

这个符号其实和你使用的用户名有关。比如你使用的用户名是xiaoming,那么~代表的可能就是/home/xiaoming/;如果你当前使用的用户名是xiaoli123,那么~代表的可能就是/home/xiaoli123;如果你是用的是root用户,那么~代表的就是/root/

当然一台服务器很可能是有很多人一起使用的,如果说每个人都需要上传一份自己的密钥,应该怎么办呢?这个问题不大,所有人都把自己的公钥都放在这个authorized_keys文件中,只需要换行隔开就可以了。

1
2
3
id_rsa.pub01.....
id_rsa.pub02.....
id_rsa.pub03.....

这里需要注意,如果你只将公钥放在了用户A的authorized_keys文件里,那么有且仅有用户A是可以免密登录的,使用其他用户名还是不能免密登录

所以,一定一定一定要注意用户名!!!。我看过的一些教程中默认配置的是root用户,公钥存放的路径也直接就在/root/文件夹下,结果配完了我发现只有root用户可以免密登录,还找不到错误原因👿

3.在VSCode远程ssh连接

如果上面的步骤都配置成功了,那么配置文件其实只写正常的几项配置就已经可以免密登录了:

1
2
3
4
Host xx
HostName 10.21.xx.xxx
User 你的用户名
Port 22

这个部分有的教程里会填写其他配置信息,比如:

1
2
3
4
5
6
Host dev
HostName xx.cmtspace.cn
User root
Port 22
PreferredAuthentications publickey
IdentityFile "C:\Users\Administrator\.ssh\id_rsa"

但是经过我测试发现,不需要IdentityFile也是可以免密登录的,而且那个PreferredAuthentications加了之后反而连接时会不断报错

4.报错处理

(1)服务器上没有~/.ssh/authorized_keys文件夹

这个问题好解决,直接创建一个.ssh文件夹和authorized_keys文件即可。

(2)文件权限问题

这个问题一般是在服务器上发生的,比如当你想修改authorized_keys时日志报错说你没有足够的权限,或者访问.ssh文件夹的时候就已经爆出权限错误了,只需要修改一下权限即可:

1
2
3
chmod 700 ~
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

注意:如果使用的是root用户,请将~改成/root

(3)sshd配置问题

有时候权限没有问题但还是连不上,这时可能是服务器的ssh配置中存在问题,这时候需要修改/etc/ssh/sshd_config文件,取消注释某些项:

1
2
3
4
5
#将这两行取消注释
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
# 将RSAAuthentication注释(如果没有这一项就不用管)
# RSAAuthentication no

修改好之后,还需要重启sshd:

1
service sshd restart

(4) Permissions for ‘xx/id_rsa’ are too open.It is required that your private key files are NOT accessible by others.

使用VSCode SSH 连接服务器时,很可能会在连接过程中报这个错误。这个错误的意思其实是 有多个用户可权限访问你的私钥文件,所以你的私钥文件访问权限不安全

首先找到私钥文件,右键进入 安全-> 高级:

image.png

在这里 禁用继承,删除其他用户,只保留当前用户和SYSTEM即可:
image.png

  • 标题: VSCode SSH设置免密登录
  • 作者: fanz
  • 创建于 : 2024-12-16 11:18:01
  • 更新于 : 2025-04-16 09:19:54
  • 链接: https://redefine.ohevan.com/sokh61/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。