使用Vscode的Remote-SSH通过ssh密钥免输入密码连接远程服务器

本文目录

    • 一、Remote-SSH安装与配置
      • [1.1 插件安装流程](#1.1 插件安装流程)
      • [1.2 配置文件创建](#1.2 配置文件创建)
    • 二、服务器连接与验证
      • [2.1 建立连接操作](#2.1 建立连接操作)
      • [2.2 连接状态确认](#2.2 连接状态确认)
    • 连接成功示意图
    • 三、远程文件操作指南
      • [3.1 文件/目录访问](#3.1 文件/目录访问)
      • [3.2 文件编辑管理](#3.2 文件编辑管理)
      • [3.3 集成终端使用](#3.3 集成终端使用)
    • 四、SSH密钥认证配置
      • [4.1 密钥生成指南](#4.1 密钥生成指南)
      • [4.2 公钥部署流程](#4.2 公钥部署流程)
      • [4.3 客户端配置补充](#4.3 客户端配置补充)
      • [4.4 尝试SSH密钥连接](#4.4 尝试SSH密钥连接)
    • 五、常见问题诊断
      • [5.1 连接失败排查](#5.1 连接失败排查)
      • [5.2 典型错误解决方案](#5.2 典型错误解决方案)
        • [问题1:REMOTE HOST IDENTIFICATION CHANGED](#问题1:REMOTE HOST IDENTIFICATION CHANGED)
        • [问题2:Permission denied (publickey)](#问题2:Permission denied (publickey))

一、Remote-SSH安装与配置

1.1 插件安装流程

  1. 点击VSCode左侧活动栏「Extensions」 扩展 图标
  2. 搜索框输入"Remote-SSH"(微软官方开发)
  3. 点击安装按钮完成插件部署

1.2 配置文件创建

安装完成后:

  1. 点击左侧活动栏「Remote Explorer」远程资源管理器图标
  2. 点击配置按钮打开SSH配置文件

典型配置文件格式:

bash 复制代码
Host 自定义主机名(如:MyServer)
    HostName 服务器IP地址
    User 登录用户名(如:root)
    Port SSH端口号(默认:22)
    # IdentityFile 私钥路径(可选)

二、服务器连接与验证

2.1 建立连接操作

  1. 在「Remote Explorer」远程资源管理器中定位配置好的服务器
  2. 点击连接按钮启动会话
    • 两个按键分别对应 在当前窗口尝试连接打开一个新的窗口进行连接

连接过程提示说明:

  • 首次连接需确认主机指纹验证
    • 需要注意的是
      • 如果已经成功保存过指纹的服务器的指纹被重置或系统被重置会导致Vscode使用错误的指纹从而无法连接,解决办法参考文章末尾的5.2的问题2
  • 输入服务器用户密码完成认证
    • 需要注意的是:
      • 1、确保密码正确
      • 2、确保该用户允许远程登录
      • 3、确保该用户被允许使用密码登录(通常root是不被允许远程且不允许密码登录的)

2.2 连接状态确认

成功连接特征:

  1. 左下角显示「SSH: 主机名」状态
  2. 文件资源管理器显示远程目录结构

三、远程文件操作指南

3.1 文件/目录访问

  1. 通过菜单栏「File > Open Folder」打开远程目录
  2. 输入绝对路径访问指定位置(如:/var/www)

3.2 文件编辑管理

功能支持:

  • 右键菜单创建文件/目录
  • 拖放上传本地文件
  • 快捷键保存修改(Ctrl+S)

3.3 集成终端使用

打开方式:

  • 菜单栏「Terminal > New Terminal」
  • 快捷键Ctrl+`

四、SSH密钥认证配置

  • 生成过程中会提示输入密钥的密码,如果输入密码,则每次使用密钥时均需要输入密码,直接回车可以设置为空密码
  • 空密码连接时不会打断你的工作,但这需要你妥善保管你的私钥

4.1 密钥生成指南

Windows系统
powershell 复制代码
# 生成RSA密钥对

ssh-keygen -t rsa -b 4096
# 密钥默认存储位置
C:\Users\<用户名>\.ssh\id_rsa
Linux/Mac系统
bash 复制代码
ssh-keygen -t ed25519 -C "[email protected]"

4.2 公钥部署流程

  1. 远程服务器创建.ssh目录
bash 复制代码
mkdir -p ~/.ssh && chmod 700 ~/.ssh
  1. 添加公钥到授权文件
bash 复制代码
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

bash 复制代码
# 保存退出:按下 Esc-> 输入:-> 输入wq
vim  ~/.ssh/authorized_keys
# 输出文件内容确保正确保存
cat  ~/.ssh/authorized_keys

4.3 客户端配置补充

修改SSH配置文件添加:

bash 复制代码
Host MyServer
    IdentityFile ~/.ssh/id_rsa

形如:

bash 复制代码
Host xxx-xx
    HostName xxx.xxx.xxx.xxx
    User xxx
    Port xxx
    IdentityFile C:\Users\xxx\.ssh\id_rsa

4.4 尝试SSH密钥连接

当本地私钥和服务器保存的公钥一一对应时,既可以在vscode连接服务器时无需输入用户对应的密码


五、常见问题诊断

5.1 连接失败排查

  1. 认证失败 2. 连接超时 3. 权限拒绝 4. 主机不可达 5. Host Key变更 6. 其他错误 7. 资源限制 SSH 连接失败 检查认证方式 密码错误? 检查密码特殊字符转义 服务器是否允许密码登录 SSH 密钥问题 密钥未加载到ssh-agent eval $(ssh-agent) && ssh-add ~/.ssh/id_rsa 公钥未部署到服务器 检查~/.ssh/authorized_keys权限600 检查authorized_keys文件格式 密钥权限错误 chmod 600 密钥格式错误 需转PEM ssh-keygen -p -m PEM -f keyfile VSCode指定密钥路径 Host配置中IdentityFile参数 网络问题 服务器IP/端口正确? Telnet测试端口连通性 telnet server_ip 22 代理/VPN干扰 检查VSCode代理设置 临时关闭VPN测试 DNS解析问题 尝试直接使用IP连接 SSH服务问题 服务器sshd是否运行? systemctl status sshd /etc/ssh/sshd_config 配置 PasswordAuthentication yes/no PubkeyAuthentication yes PermitRootLogin prohibit-password AllowUsers/AllowGroups限制 检查SELinux状态 getenforce 或 sestatus 防火墙/NAT 云服务器安全组规则 检查入站22端口规则 iptables/ufw日志 journalctl -u ufw -n 50 本地防火墙拦截 临时关闭Windows Defender防火墙 跳板机配置错误 指纹验证失败 删除 /.ssh/known_hosts 对应记录 ssh-keygen -R 服务器IP 检查中间人攻击可能性 详细日志 启用VS Code Remote-SSH详细日志 设置: remote.SSH.showLoginTerminal 设置: remote.SSH.logLevel: debug ssh -vvv 用户名@服务器 手动调试 检查VSCode扩展日志 输出面板选择Remote-SSH 系统限制 服务器内存不足 进程数/文件描述符限制 磁盘空间不足

5.2 典型错误解决方案

问题1:REMOTE HOST IDENTIFICATION CHANGED
bash 复制代码
# 清除已知主机记录
ssh-keygen -R 主机IP
问题2:Permission denied (publickey)
bash 复制代码
# 检查密钥权限
chmod 600 ~/.ssh/id_rsa

相关推荐
lemon31062413 分钟前
dockerfile制作镜像
linux·运维·服务器·学习
AI享网无代码创作1 小时前
WP Mail 邮件发送:WordPress Mail SMTP设置
运维·服务器·网络
就改了1 小时前
Java进阶——Lombok的使用
java·服务器·前端
陈阳羽2 小时前
云服务器Ubuntu安装宝塔面板MongoDB修改配置文件本地连接
服务器·mongodb·ubuntu
无名之逆2 小时前
hyperlane:Rust HTTP 服务器开发的不二之选
服务器·开发语言·前端·后端·安全·http·rust
苏十八2 小时前
计算机网络相关知识小结
服务器·网络·计算机网络
laugh123212 小时前
GitLab 服务器宕机时的项目代码恢复方法
服务器·git·gitlab·数据恢复
还是鼠鼠3 小时前
Node.js 路由 - 初识 Express 中的路由
前端·vscode·前端框架·npm·node.js·express
愚润求学3 小时前
Linux基础指令(一)
linux·服务器·语法
yufei-coder4 小时前
配置Next.js环境 使用vscode
开发语言·javascript·vscode·next.js