目录
问题描述
本人在使用 VSCode Remote-SSH 插件连接超算集群节点时,遇到以下问题:已正确配置 SSH 密钥,且 VSCode 能识别密钥文件(如图1),但在建立连接时仍反复要求输入密码(如图2)。
图1 密钥配置验证通过
图2 仍然弹出密码验证提示
尝试了密钥文件权限重置、VSCode 缓存清理、重装 Remote-SSH 插件等方法,然而并无卵用。今天本人终于把这个问题给解决了,特地写下这篇文章向大家分享我的解决方案。
软件版本
以下是我做测试时所用到的软件版本:
VSCode:2023-1.85
Linux:CentOS 7.6
Remote-SSH:v0.107.1
HPC:SCNet 超算互联网
原因分析
VSCode Remote-SSH 插件默认用户家目录位于 /home/username,但在某些环境下,如高性能计算集群(HPC),用户家目录可能被挂载到非标准路径,如 /public/home/username。插件未正确识别实际路径时,会尝试在默认路径下创建 .vscode-server 目录,导致权限错误,从而触发认证回退。
错误逻辑链
- VSCode 尝试连接远程服务器
- 自动检测家目录路径
/home/username
- 在错误路径下创建
.vscode-server
- 权限不足导致安装失败
- 认证回退提示输入密码或者抛出
Permission denied
错误
解决方案
-
安装 Remote-SSH 插件;
-
生成并上传密钥;
(1)打开终端,输入【ssh-keygen】,连按【三次回车】即可;
(2)打开密钥存放位置,将【.pub】后缀结尾的【公钥】上传至服务器的【~/.ssh】目录下;
(3)将【公钥】内容写入【authorized_keys】文件中,如果没有该文件,直接新建并写入;
bash# 新建 authorized_keys 文件 touch ~/.ssh/authorized_keys # 公钥内容写入 authorized_keys 文件中 cat id_ed25519.pub >> ./authorized_keys
-
更改文件权限;
bash# 新建 authorized_keys 文件 chmod 700 ~/.ssh # 公钥内容写入 authorized_keys 文件中 chmod 600 ~/.ssh/authorized_keys
-
强制指定 VSCode 服务器安装路径(关键)
(1)按快捷键【Ctrl + , 】打开 VSCode 配置;
(2)搜索【settings】,点击【在settings.json 中编辑】;
(3)修改【remote.SSH.serverInstallPath】(如果没有该配置直接添加),替换【your_remote_hostname】 和【your_node_name】为你的主机名和实际路径;
json{ "remote.SSH.serverInstallPath": { "your_remote_hostname": "/public/home/your_node_name/.vscode-server" } }
(4)保存并关闭。
- 添加本地 SSH 配置(主机名、用户名、端口号、密钥文件路径)
- 点击连接。
到此连接问题就已经完美解决辣!
总结
本文主要解决了 VSCode 远程连接超算集群时出现的认证异常问题。引发该问题的主要原因是 VSCode 默认在标准家目录(/home/username)下创建.vscode-server,但超算集群实际家目录位于 /public/home/username,导致插件在错误路径初始化时触发认证回退,解决该问题的方法也很简单,只需要手动指定 VSCode 服务器的安装路径即可解决!