You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2环境下VSCode通过SSH连接EC2实例遇权限及连接问题

解决VSCode SSH连接EC2的权限问题及后续报错排查

问题背景

在VSCode中通过SSH连接EC2实例时,反复提示pem文件权限过于开放,但直接在终端执行ssh -i swayek.pem ec2-user@ec2-44-212-10-54.compute-1.amazonaws.com可正常连接。推测原因是VSCode默认使用Windows终端的SSH客户端,而非WSL2中的客户端,而密钥文件原本存放在WSL2环境中。将pem文件复制到Windows侧并执行icacls权限配置命令后,出现新的未知错误。

两种解决方案

方案一:让VSCode使用WSL2的SSH客户端

直接复用WSL2中已配置好权限的密钥,无需在Windows侧修改权限:

  1. 打开VSCode设置(快捷键Ctrl+,),搜索remote.SSH.path
  2. 将配置值改为WSL2的SSH调用路径,示例:
    C:\Windows\System32\wsl.exe ssh
    
    若需指定特定WSL发行版,可改为:
    wsl -d Ubuntu-22.04 ssh
    
  3. 编辑VSCode的SSH配置文件(路径:C:\Users\<你的Windows用户名>\.ssh\config),添加以下内容(替换对应路径和实例信息):
    Host ec2-instance
        HostName ec2-44-212-10-54.compute-1.amazonaws.com
        User ec2-user
        IdentityFile \\wsl$\Ubuntu-22.04\home\<你的WSL用户名>\.ssh\swayek.pem
    
  4. 重启VSCode后尝试连接即可。

方案二:修复Windows侧pem文件的权限配置

若坚持使用Windows侧的密钥文件,重新执行正确的权限配置步骤:

  1. 打开管理员权限的PowerShell(右键开始菜单选择「Windows PowerShell(管理员)」)
  2. 切换到pem文件所在目录,示例:
    cd C:\Users\<你的Windows用户名>\.ssh
    
  3. 执行以下命令(替换swayek.pem为你的实际文件名):
    # 重置文件权限
    icacls .\swayek.pem /reset
    # 禁用权限继承并移除继承的权限
    icacls .\swayek.pem /inheritance:r
    # 仅给当前用户添加读取权限
    icacls .\swayek.pem /grant:r "$env:USERNAME:(R)"
    # 查看权限确认(应只有当前用户有读取权限)
    icacls .\swayek.pem
    
  4. 编辑VSCode的SSH配置文件,指定Windows侧的密钥路径:
    Host ec2-instance
        HostName ec2-44-212-10-54.compute-1.amazonaws.com
        User ec2-user
        IdentityFile C:\Users\<你的Windows用户名>\.ssh\swayek.pem
    
  5. 若仍报错,检查VSCode的Remote-SSH扩展是否为最新版本,重启VSCode后重试。

常见新错误排查

  • 权限修改失败:确保使用管理员PowerShell执行命令,普通权限无法修改文件的核心权限。
  • 路径不匹配:确认命令中的文件名和实际复制到Windows侧的pem文件名一致(比如你复制的是swayek.pem,但命令里写的是aws-ec2-key.pem)。
  • SSH配置错误:检查配置文件中的IdentityFile路径是否正确,路径分隔符在Windows配置中用\,不要用Linux的/。

内容的提问来源于stack exchange,提问作者Eric Andre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:25:28