当前位置: 首页 > news >正文

【完美解决】VSCode连接HPC节点,已配置密钥却还是提示需要输入密码

目录

  • 问题描述
  • 软件版本
  • 原因分析
    • 错误逻辑链
  • 解决方案
  • 总结


问题描述

  本人在使用 ​​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 目录,导致权限错误,从而触发认证回退。

错误逻辑链

  1. VSCode 尝试连接远程服务器
  2. 自动检测家目录路径 /home/username
  3. 在错误路径下创建 .vscode-server
  4. 权限不足导致安装失败
  5. 认证回退提示输入密码或者抛出 Permission denied 错误

解决方案

  1. 安装 Remote-SSH 插件;

  2. 生成并上传密钥;
    (1)打开终端,输入【ssh-keygen】,连按【三次回车】即可;
    在这里插入图片描述
    (2)打开密钥存放位置,将【.pub】后缀结尾的【公钥】上传至服务器的【~/.ssh】目录下;
    (3)将【公钥】内容写入【authorized_keys】文件中,如果没有该文件,直接新建并写入;

    # 新建 authorized_keys 文件
    touch ~/.ssh/authorized_keys
    # 公钥内容写入 authorized_keys 文件中
    cat id_ed25519.pub >> ./authorized_keys
    
  3. 更改文件权限;

    # 新建 authorized_keys 文件
    chmod 700 ~/.ssh
    # 公钥内容写入 authorized_keys 文件中
    chmod 600 ~/.ssh/authorized_keys
    
  4. 强制指定 VSCode 服务器安装路径(关键)
    (1)按快捷键【Ctrl + , 】打开 VSCode 配置;
    (2)搜索【settings】,点击【在settings.json 中编辑】;
    在这里插入图片描述
    (3)修改【remote.SSH.serverInstallPath】(如果没有该配置直接添加),替换【your_remote_hostname】 和【your_node_name】为你的主机名和实际路径;

    {
      "remote.SSH.serverInstallPath": {
        "your_remote_hostname": "/public/home/your_node_name/.vscode-server"
      }
    }
    

(4)保存并关闭。

  1. 添加本地 SSH 配置(主机名、用户名、端口号、密钥文件路径)
    在这里插入图片描述
    在这里插入图片描述
  2. 点击连接。

  到此连接问题就已经完美解决辣!

总结

  本文主要解决了 VSCode 远程连接超算集群时出现的认证异常问题。引发该问题的主要原因是 VSCode 默认在标准家目录(/home/username)下创建.vscode-server,但超算集群实际家目录位于 ​​/public/home/username​​,导致插件在错误路径初始化时触发认证回退,解决该问题的方法也很简单,只需要手动指定 VSCode 服务器的安装路径即可解决!

http://www.dtcms.com/a/123343.html

相关文章:

  • 京华幻梦:科技自然共生诗篇
  • 【蓝桥杯】二分查找
  • springcloud进阶
  • SkyWalking + ELK 全链路监控系统整合指南
  • FPGA_DDR(二)
  • Go语言编写一个进销存Web软件的demo
  • python基础语法1:输入输出
  • Java 基础 - 反射(1)
  • Java学习——day26(线程同步与共享资源保护)
  • FastAPI用户认证系统开发指南:从零构建安全API
  • Cloudflare 缓存工作原理
  • ComfyUI_Echomimic部署问题集合
  • 企业信息化-系统架构师(九十八)
  • 玩转Docker | 使用Docker搭建pinry图片展示系统
  • swagger + Document
  • 修改 docker 工作目录
  • MySQL的索引下推是什么
  • opengrok使用指南
  • 了解 DeFi:去中心化金融的入门指南与未来展望
  • JS—防抖和节流:1分钟掌握防抖和节流
  • 【ctfplus】python靶场记录-任意文件读取+tornado模板注入+yaml反序列化(新手向)
  • 良渚实验室郭国骥/夏宏光团队合作开发单细胞水平筛选抗肿瘤药物的深度学习框架——“神农”
  • 蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】
  • Java 面试总结
  • 数据结构 | 证明链表环结构是否存在
  • ubuntu设备磁盘空间不足 处理办法
  • WinForm真入门(12)——RadioButton控件详解
  • C++中static与private继承关系解析
  • Soybean Admin 使用tv-focusable兼容电视TV端支持遥控器移动焦点
  • 智能体代理模式(Agent Agentic Patterns)深度解析