如何让我的 Yubikey 在 Windows 10 中与 SSH 配合使用?

2024-03-02

在出于技术兴趣购买了 Yubikey 5 NFC(固件 5.2.7)并尽可能设置 FIDO2 身份验证后,我遇到了无法再通过 SmartGit 连接到我的 GitLab 服务器的问题,因为没有请求第二个因素,因此我无法连接到服务器。

然后我决定在 Windows 10 上通过 Git Bash 和 SSH 处理它。不幸的是,这里的文档假设了很多先验知识,而我在这个主题上绝对是初学者。与此同时,我设法使用本地生成的 SSH 证书通过 Git Bash 和 SSH 连接到服务器。

现在我想使用 Yubikey 而不是计算机本地存储的证书。不幸的是,所有说明(例如这个https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generate-a-new-ssh-key-and-adding-it-to-the- ssh-agent#为硬件安全密钥生成新的 ssh 密钥 https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent#generating-a-new-ssh-key-for-a-hardware-security-key)给我带来同样的错误消息:

$ ssh-keygen -t ed25519-sk -C "[email protected] /cdn-cgi/l/email-protection"
Generating public/private ed25519-sk key pair.
You may need to touch your authenticator to authorize key generation.
Key enrollment failed: invalid format

在此之前,系统会提示我输入 PIN 码。有趣的是:消息看起来一模一样,无论我是否插入了 Yubikey 都没关系。使用 ecdsa-sk 的尝试会导致相同的结果。

(顺便说一句,我已经在 Yubikey 上成功存储了 OpenPGP 证书。)

现在我还阅读了一些有关 libfido2 的内容,但是我找不到任何有关如何在 Windows 10 上使用它的说明。

所以我的问题是:我如何设法使用我的 Yubikey 而不是我的本地密钥? 或者:如果这是问题,我该如何安装 libfido2?


May 2021

所以:这是真的SSH Git 操作现在支持安全密钥 https://github.blog/2021-05-10-security-keys-supported-ssh-git-operations/,正如本月初(2021 年 5 月)在 GitHub 上宣布的那样,但是,,仍然存在问题。

您的错误消息看起来像是 Debian 上正在发生的错误:“问题 980393:/usr/bin/ssh-keygen -t ecdsa-sk失败并显示“密钥注册失败:格式无效” https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980393".
它是本月仍在报道中 https://twitter.com/ndm/status/1391915400829411328.

如果这也失败了-t ecdsa,尝试并使用OpenSSH 的插件,用于通过本机 Windows Hello API 连接到 FIDO/U2F 安全密钥 https://github.com/tavrez/openssh-sk-winhello可能有帮助。
Type export SSH_SK_HELPER=/usr/lib/ssh/ssh-sk-helper.exe首先,如所见tavrez/openssh-sk-winhello issue 1 https://github.com/tavrez/openssh-sk-winhello/issues/1.
检查您的 OpenSSH 版本至少为 8.2。我这边使用的是最新的 Windows 版 Git:

ssh -V
OpenSSH_8.5p1, OpenSSL 1.1.1k  25 Mar 2021

The OP 机器人机器人 https://stackoverflow.com/users/5245525/droiddroid添加评论 https://stackoverflow.com/questions/67639931/how-do-i-get-my-yubikey-to-work-with-ssh-in-windows-10#comment119635748_67657004:

尽管如此,我现在遇到了 GitLab 还不支持安全密钥的问题:问题 213259 https://gitlab.com/gitlab-org/gitlab/-/issues/213259


2022 年 2 月:GitLab 现在应该支持这些安全密钥。

See 亚搏体育appGitLab 14.8 https://about.gitlab.com/releases/2022/02/22/gitlab-14-8-released/#support-for-ecdsa-sk-and-ed25519-sk-ssh-keys(2022 年 2 月)

支持 ecdsa-sk 和 ed25519-sk SSH 密钥

OpenSSH 8.2 https://www.openssh.com/releasenotes.html#8.2添加了对 FIDO/U2F 硬件验证器的支持 ecdsa-sk 和 ed25519-sk 密钥类型。

GitLab 现在支持这些密钥类型,允许用户利用硬件支持的 SSH 身份验证。

https://about.gitlab.com/images/14_8/ssh_key.png https://about.gitlab.com/images/14_8/ssh_key.png-- 支持 ecdsa-sk 和 ed25519-sk SSH 密钥

See 文档 https://docs.gitlab.com/ee/ssh/#generate-an-ssh-key-pair-for-a-fidou2f-hardware-security-key and Issue https://gitlab.com/gitlab-org/gitlab/-/issues/213259.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让我的 Yubikey 在 Windows 10 中与 SSH 配合使用? 的相关文章

  • GIT 或 SVN 或...适用于前端开发人员

    我最近开始将一些项目导入到工作中的 Subversion 存储库中 在接下来的几周内 我希望团队中的每个人都能负责自己的源代码控制管理 我选择 SVN 而不是 GIT 的原因是我想要everyone团队中的人员 包括设计师 前端人员 集成商
  • 如果不是最新的,则阻止 git Push 发送整个存储库

    相关问题 为什么 Git 每次推送 origin master 时都会发送整个存储库 https stackoverflow com questions 1381403 why does git send whole repository
  • 将各种提交合并为一而不合并

    是否可以加入各种提交 这是我的情况 我的应用程序在 OSX 10 6 和 10 7 中运行 我已经修复了 10 6 的一些内容 然后提交了 更改为 10 7 并再次修复修复程序 以便它们兼容 然后再次提交 然后返回到 10 6 并再次检查并
  • 如何使用 vim 作为“git log”编辑器?

    当我跑步时git log 编辑器到底是什么git log正在使用 Also 无论如何我可以使用吗vim作为我的默认编辑器git log 如果我想搜索 git 日志 最好的方法是什么 现在我正在做类似的事情 git log grep bla
  • Git 日志历史记录

    对于版本控制来说 重要的一件事是知道谁做了什么更改 如果某些内容发生了变化 而我不知道为什么要进行更改 我会查看历史并询问进行更改的人 当我探索 git 时 让我对这个功能有点紧张的一件事是它似乎很容易伪造 是什么阻止我将同事姓名 电子邮件
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • 禁止 Gerrit 推送到 refs/for/master

    我已经更新了所有项目昨天获得访问权限 人们说他们今天早上无法将更改推送到存储库 当我恢复访问权限后 他们仍然无法将更改推送到存储库 只能clone工作正常 在将更改推送到远程存储库时 它表示 remote rejected HEAD gt
  • JSch:如何使用 ssh 密钥 ssh 到服务器

    我想从另一个 ssh 服务器后面 ssh 进入服务器 网关服务器需要用户名 密码 我可以做到这一点 我正在使用隧道进入下一台服务器 但这需要only一个 ssh 密钥 我已经通过 PuTTY 生成了密钥 因此它存在于我的用户名中 但我不确定
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • Git Push 远程:致命:包超出允许的最大大小

    我接到了一个大项目 客户想将其添加到github 我是一点一点添加的 然后发生的事情是我太贪心了 一次添加了太多文件 现在 无论我尝试什么 我都会不断收到此错误 我怎样才能解决这个问题 我试图回滚 但也许我做错了 git push Ente
  • 我可以将我的heroku git repo导入bitbucket吗?如何?

    我的笔记本电脑坏了 我需要从另一台计算机上编码 我正在使用 Heroku 我想将最新版本的代码从 Heroku 获取到另一台机器 据我了解 强烈建议使用 GitHub 或 BitBucket 获取适当的远程存储库 我决定尝试一下 BitBu
  • 永久删除 git 提交历史记录

    我需要永久且完全删除 git 存储库的提交历史记录并继续使用文件的当前版本 旧版本 提交不得以任何方式访问 我尝试创建一个新的主分支 删除所有其他分支 但是当我在 git bash 中尝试 git show xxxx 时 旧的提交继续显示
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • Azure Devops Pipeline YAML 中的 Git 标记名称

    Summary 如何获取 Azure Devops Pipeline YAML 文件中当前 git 标签的名称 我想做什么 我正在 Azure Devops 中设置构建管道 创建新的 git 标签时会触发管道 然后我想构建 docker 镜
  • 使 .git 目录 web 不可访问

    我有一个网站 我使用 github 闭源 来跟踪更改和更新网站 唯一的问题是 git 目录似乎可以通过网络访问 我怎样才能停止这个并且仍然能够使用 git 我应该使用 htaccess 吗 我应该更改 git 的权限吗 把这个放在一个 ht
  • 如何将 git-svn 与 svn+ssh url 一起使用

    我喜欢在cygwin中使用git svn clone使用我们公司 svn 存储库的命令 这个的网址是svn ssh svn
  • 返回到 Github Desktop 中的上一个提交

    我正在尝试使用 GitHub Desktop 即 GUI 应用程序 而不是命令行 返回到先前的提交 在同一分支上 我认为这是一个核心功能 因为它是首先使用源代码控制的主要原因 我可以看到可以恢复提交 但这并不是我真正想要的 因为它创建了一个
  • 无法从另一台计算机访问 git 分支

    基本上我看不到另一台计算机上的分支 我跑 git branch a 在家用电脑上我得到 C learn ror sample app filling in layout gt git branch a filling in layout m
  • 我可以获取两次提交之间 git 子文件夹中已更改文件的列表吗?

    我有一个包含许多文件夹的 git 存储库 我需要找出在两次提交之间这些文件夹之一中的哪些文件发生了更改 有没有一个好的方法来做到这一点 我想你可以坚持走最后的路git diff git diff HEAD HEAD special fold
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch

随机推荐

  • Javascript 未捕获类型错误:.split 不是函数

    我想做一个功能 用户每天只能领取一次硬币 我做了这个功能 split这样它就只比较日期Date 仅比较日期和时间 但是 我收到了这个 JavaScript 错误 未捕获的 TypeError 中间值 split 不是函数 有人知道如何解决这
  • 如何在主目录上撤消 git init ?

    I did git init and git add 在我的主目录中 我认为这减慢了每个操作的速度 因为该目录太大了 我怎样才能撤消git init主目录的 你可以这样做rm rf HOME git删除 git 存储的所有版本控制信息 这会
  • Python:每月的第三个星期五

    我是一个菜鸟Python程序员 我需要编写一个脚本来检查给定日期 以 月 日 年 形式作为字符串传递 是否是该月的第三个星期五 我正在使用Python 2 7 例如 这些日期可以帮助您更好地理解我的问题 手头有一份年度日历 输入 gt 输出
  • LINQ(或伪代码)按邻近度对项目进行分组

    有谁能够启发我如何使用 LINQ 或者必要时更合适的东西 来创建一个整数列表列表 这些整数列表按彼此的接近程度进行分组 基本上 我想创建组中的数字与任何其他数字在 5 以内 所以 给定 3 27 53 79 113 129 134 140
  • Inno Setup 查找子文件夹

    是否有办法获取目录中的所有 或仅第一个 子文件夹 我正在尝试将文件安装到具有动态名称的子目录中 它不是 Inno Setup 可用的常量之一 有办法找到这个子目录名吗 那么 要获取某个文件夹中第一个找到的子文件夹的名称 无论它是哪个 您可以
  • 将不需要的值替换为最接近且恰好为正的索引值

    这个问题与上一个问题不同 如何找到具有负值的索引并将该值替换为最接近的正值索引值 https stackoverflow com questions 59742108 how to find indices with a negative
  • 设置 NSStreamNetworkServiceTypeBackground “幕后作用”是什么?

    我有一个内部应用程序 不适用于 iPhone 商店分发 因此不受 Apple 批准 它需要在运行时保持少量 TCP 和 UDP 套接字绑定 在测试时 我注意到我的绑定套接字有一些奇怪的行为 只要设备进入睡眠状态 它就会关闭 例如 当您按下手
  • 设置为 Theme.NoTitleBar.Fullscreen 后应用程序崩溃

    如果我不取消标题栏 我的应用程序就会启动 但是当我取消标题栏时 它一启动就会崩溃 这是我到目前为止的代码 xml version 1 0 encoding utf 8 gt
  • 在 Angular 7 中使用 getElementById 在 DOM 元素上应用指令

    我有一些由第三方 plotly 生成的 HTML 我很想在它创建的 DOM 元素之一上应用我们已有的指令 该指令在单击时打开一个 colorPicker 并将颜色设置为字符串 我可以通过以下方式到达元素querySelector or ge
  • 英特尔 MKL 错误:参数 6 输入时不正确

    我收到以下错误 Intel MKL ERROR Parameter 6 was incorrect on entry to DGELSD 在 scipy 上运行 Savitzky Golay 过滤器时 函数scipy signal savg
  • 测试 IntegrityError UNIQUE 约束失败

    我对电子邮件和商店有一个 unique together 约束 我使用以下代码来测试唯一约束 我期望通过assertRaise 测试 但结果显示相反 我在这里缺少什么 from django db backends sqlite3 base
  • 散景,仅在单个轴上缩放,相应地调整另一个轴

    如何使散景仅在一个轴上使用缩放并自动缩放对象 以便它们精确地占据给定的空间 并在可缩放轴平行的极值点上添加一些填充 同时将空白空间渲染到范围之外 换句话说 准确地说是 疯狂技能 示例图 https i stack imgur com I3j
  • 仿函数调用和函数调用的详细区别?

    这样做的关键原因是 for each 实际上并没有假设它的第三个参数是一个函数 它只是假设它的第三个 论证是可以的 用适当的参数调用 A 适当定义的对象也可以 作为 而且往往比 更好 功能 例如 更容易 内联应用程序运算符 类而不是内联传递
  • 如何从 Visual Studio 中调试 IIS 上的两个 Web 应用程序/服务?

    在 Visual Studio 2010 中 我想同时调试在 IIS 上运行的两个 Web 应用程序 调试第一个应用程序时一切正常 但是当开始调试第二个应用程序且第一个程序仍处于调试模式时 Visual Studio 会提示 无法在 Web
  • 通过指定坐标检索 html 控件

    如何仅通过指定触发事件的坐标来获取 html 控件的 id 例如onmousedown onmouseup onclick ETC 坐标可以通过以下方式获得 e clientX e clientY其中 e 是事件对象 这个想法是获取在其上完
  • Chrome 不允许 cookie 过期时间少于 4 小时

    我似乎无法在 Google Chrome 中设置寿命较短的 cookie 它们要么没有被设置 要么立即被删除 无法分辨是哪一个 尽管两种方式的结果都是相同的 仅当未来到期时间为 4 小时或更短时 才会发生这种情况 如果过期时间大于 4 小时
  • 如何在 Extjs 4.1 中使用 treecombo

    我找到了导师http www sencha com forum showthread php 198856 Ext ux TreeCombo http www sencha com forum showthread php 198856 E
  • 验证一组对象是否已正确映射

    我正在寻找一套干净的管理方法测试特定的相等性 http blog ploeh dk 2012 06 22 Test specificEqualityversusDomainEquality in F 单元测试 90 的时间里 标准结构平等
  • 在哪里下载 MySQLdump.ext 比 mysqldump.exe 版本 5.7.1.7 更新的版本

    尝试通过 MySQL Workbench 转储简单数据库 方法是单击 服务器 gt 数据导出 gt mydb gt 开始导出 获取消息 mysqldump 版本不匹配 该消息显示这些版本 mysqldump exe 版本 5 7 1 7 M
  • 如何让我的 Yubikey 在 Windows 10 中与 SSH 配合使用?

    在出于技术兴趣购买了 Yubikey 5 NFC 固件 5 2 7 并尽可能设置 FIDO2 身份验证后 我遇到了无法再通过 SmartGit 连接到我的 GitLab 服务器的问题 因为没有请求第二个因素 因此我无法连接到服务器 然后我决