VSCode Remote-ssh 免密登录Linux服务器
Remote-ssh 插件实现免密登录远程Linux服务器,通过 ssh-keygen
来生成对应的公匙和密匙,将公匙放到远程Linux服务器上通过公匙和密匙配对进行登录。
1、本地设备生成公匙和密匙
在 cmd 窗口通过如下命令生成对应的公匙和密匙
# 在此通过 -f 来指定生成对应的公匙、密匙的位置和名称,不使用默认的 id_rsa 是避免覆盖掉其它平台的密匙
ssh-keygen -t ed25519 -f C:/Users/<userName>/.ssh/id_ed25519_vmUbuntu
一路默认点击Enter即可,该命令将在当前设备的 .ssh 目录下生成密匙id_ed25519_vmUbuntu
和 公匙id_ed25519_vmUbuntu.pub
文件。
2、将公匙添加到 Linux 服务器
(1)确认Linux服务器的 Home目录下是否有 .ssh 目录,如果没有需要新建。
(2)将 id_ed25519_vmUbuntu.pub
中的内容复制到 .ssh/authorized_keys
中(文件不存在时需要新建)。如果有多个设备都通过密匙的方式来连接到该服务器时,要将每个设备的公匙内容都拷贝添加到.ssh/authorized_keys
中,每个公匙一行,不要覆盖和修改其它的公匙。authorized_keys
文件是一个列表,SSH服务在认证时会逐行读取该文件,尝试与客户端提供的私钥进行匹配。
(3)设置文件的权限,如果权限过大,SSH服务会拒绝使用其中的密钥,以防被恶意篡改
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
(4)、确保 /etc/ssh/sshd_config
中对应参数允许公匙登录
打开/etc/ssh/sshd_config
配置文件,确保 PubkeyAuthentication yes
,如下图所示
如果修改该配置文件,需要重启服务以让修改生效 sudo systemctl restart sshd
3、设置本机C:/Users/<userName>/.ssh/config
文件
设置本机中的 ssh 对应的config 文件,如下
Host 192.168.25.128(VM_Ubuntu)
HostName 192.168.25.128
User ubuntuTest
IdentityFile C:/Users/<userName>/.ssh/id_ed25519_vmUbuntu
PreferredAuthentications publickey
其中
Host
后面是指的别名,来表示自定义在VSCode的远程栏目下显示什么HostName
和User
分别指的是要远程登录目标机的IP地址和用户名,不能出错,否则无法登录IdentityFile
指定了密匙文件的位置(即上面-f
后面的文件完整路径),确保ssh登录时能找到。PreferredAuthentications publickey
为优先认证方式为公匙。
【问题汇总】
1、远程连接之后,打开相应的目录报错 BadInstallScriptResult, Log显示 Resolver error: Error: Got bad result from install script 。
需要断开连接,在 VSCode 中执行如下操作,将服务器的 VS Code Server 终止允许,操作如下:
ctrl + shift + p
:快捷键打开VSCode的命令输入窗口- 输入:
Remote-SSH: Kill VS Code Server on Host...
后选择对应的服务器地址即可 Kill 远程的 VSCode Server,然后在VSCode中重新连接即可。
【参考资料】