欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 使用Vscode的Remote-SSH通过ssh密钥免输入密码连接远程服务器

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

2025/3/31 22:20:25 来源:https://blog.csdn.net/qq_43606145/article/details/146500233  浏览:    关键词:使用Vscode的Remote-SSH通过ssh密钥免输入密码连接远程服务器

本文目录

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

一、Remote-SSH安装与配置

1.1 插件安装流程

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

1.2 配置文件创建

安装完成后:

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

典型配置文件格式:

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系统
# 生成RSA密钥对ssh-keygen -t rsa -b 4096
# 密钥默认存储位置
C:\Users\<用户名>\.ssh\id_rsa
Linux/Mac系统
ssh-keygen -t ed25519 -C "your_email@example.com"

4.2 公钥部署流程

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

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

4.3 客户端配置补充

修改SSH配置文件添加:

Host MyServerIdentityFile ~/.ssh/id_rsa

形如:

Host xxx-xxHostName xxx.xxx.xxx.xxxUser xxxPort xxxIdentityFile 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
# 清除已知主机记录
ssh-keygen -R 主机IP
问题2:Permission denied (publickey)
# 检查密钥权限
chmod 600 ~/.ssh/id_rsa

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词