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

Linux下VS Code使用FIDO2安全密钥(YubiKey) SSH认证不提示PIN码

解决VS Code远程SSH无法识别FIDO2 ed25519_sk密钥的问题

以下是经过验证的排查和解决步骤:

1. 修正SSH配置文件

确保~/.ssh/config中明确指定FIDO2密钥并添加强制使用该密钥的配置,避免SSH自动跳过:

Host your-server-alias
    HostName <server-ip/domain>
    User <your-username>
    IdentityFile ~/.ssh/id_ed25519_sk
    IdentitiesOnly yes

IdentitiesOnly yes是核心配置,它会阻止SSH尝试其他可用密钥,强制使用你指定的FIDO2密钥。

2. 验证本地SSH基础功能

先脱离VS Code,在系统原生终端执行命令测试FIDO2密钥是否正常工作:

ssh -i ~/.ssh/id_ed25519_sk <your-username>@<server-ip>

如果这里也无法触发PIN/触摸验证,说明问题出在本地SSH环境:

  • 检查OpenSSH版本:必须是8.2及以上版本才支持ed25519_sk,执行ssh -V确认。
  • 确认FIDO2设备连接正常,且密钥生成时的参数(如-O verify-required)与设备能力匹配。

3. 调整VS Code远程SSH设置

  • 关闭remote.SSH.useLocalServer:该选项会让VS Code使用内置SSH服务,可能无法兼容FIDO2密钥。在VS Code设置中搜索并禁用此选项,重启VS Code后重试。
  • 指定系统SSH路径:在VS Code设置中找到remote.SSH.path,设置为系统原生SSH的路径:
    • Linux/macOS: /usr/bin/ssh
    • Windows: C:\Windows\System32\OpenSSH\ssh.exe
      这确保VS Code调用的是支持FIDO2的系统SSH客户端。

4. 修复集成终端问题

如果系统终端正常但VS Code集成终端不行:

  • 直接在集成终端中指定系统SSH路径执行命令,绕过终端环境可能的问题:
    /usr/bin/ssh -i ~/.ssh/id_ed25519_sk <your-username>@<server-ip>
    
  • 检查集成终端的环境变量是否继承了系统的硬件设备权限,部分情况下VS Code的 sandbox 模式会限制对FIDO2设备的访问,可以尝试关闭VS Code的 sandbox 选项(需谨慎操作)。

5. 检查远程服务器配置

确认远程服务器的sshd_config中已开启公钥认证:

  • 确保PubkeyAuthentication yes未被注释
  • 确认AuthorizedKeysFile路径正确,且你的FIDO2公钥已添加到远程用户的~/.ssh/authorized_keys文件中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:23:27