我使用的是 YubiKey 5Ci FIPS(固件 5.4.2),并在运行 Windows 10 (21H1) 的 Surface Book 上安装了 Git 版本 2.32.0.windows.1。 我希望能够使用安全密钥通过 GitHub 进行身份验证。
我已经能够使用以下方法创建新的 SSH 密钥:
ssh-keygen -t ed25519-sk -C <email address>
从这里我将 id_ed25519_sk.pub 的内容复制到我的 GitHub 帐户。
到目前为止一切都很好。 但是,当进行获取或推送时,我无法使用新密钥。 运行 ssh-add -l 显示正确的帐户,但是我收到以下错误:
sign_and_send_pubkey: signing failed for ED25519-SK "/c/Users/markp/.ssh/id_ed25519_sk" from agent: agent refused operation
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
没有任何提示我触摸 YubiKey 来验证请求。 从 GitHub 来看,新的 SSH 密钥报告从未被使用过。
我在网上看到了各种文章,但我一直无法解决问题 - 有人可以帮忙吗?
编辑 env | 的输出grep SSH 是:
SSH_AUTH_SOCK=/tmp/ssh-j70Yyd6E8tgs/agent.507
SSH_AGENT_PID=508
PATH=/c/Users/markp/bin:/usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Program Files/WindowsApps/Microsoft.WindowsTerminal_1.7.1033.0_x64__8wekyb3d8bbwe:/c/Python39/Scripts:/c/Python39:/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Program Files (x86)/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/ManagementStudio:/c/Program Files/Microsoft SQL Server/130/Tools/Binn:/c/Program Files/Microsoft/Web Platform Installer:/c/Program Files/dotnet:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn:/c/Program Files/nodejs:/c/ProgramData/chocolatey/bin:/c/Program Files/PowerShell/7:/c/Program Files/TortoiseGit/bin:/c/Program Files/Azure Data Studio/bin:/c/Program Files (x86)/dotnet:/c/Program Files/Git/cmd:/c/Users/markp/AppData/Local/Microsoft/WindowsApps:/c/ProgramData/markp/GitHubDesktop/bin:/c/Users/markp/.dotnet/tools:/c/Users/markp/AppData/Local/Microsoft/WindowsApps:/c/Users/markp/.dotnet/tools:/c/Users/markp/AppData/Roaming/npm:/c/Program Files (x86)/GitHub CLI:/c/Program Files/Azure Data Studio/bin:/usr/bin/vendor_perl:/usr/bin/core_perl
ORIGINAL_PATH=/c/Program Files/WindowsApps/Microsoft.WindowsTerminal_1.7.1033.0_x64__8wekyb3d8bbwe:/c/Python39/Scripts:/c/Python39:/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/System32/Wbem:/c/WINDOWS/System32/WindowsPowerShell/v1.0:/c/WINDOWS/System32/OpenSSH:/c/Program Files (x86)/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/ManagementStudio:/c/Program Files/Microsoft SQL Server/130/Tools/Binn:/c/Program Files/Microsoft/Web Platform Installer:/c/Program Files/dotnet:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn:/c/Program Files (x86)/Microsoft SQL Server/150/DTS/Binn:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn:/c/Program Files/nodejs:/c/ProgramData/chocolatey/bin:/c/Program Files/PowerShell/7:/c/Program Files/TortoiseGit/bin:/c/Program Files/Azure Data Studio/bin:/c/Program Files (x86)/dotnet:/c/Program Files/Git/cmd:/c/Users/markp/AppData/Local/Microsoft/WindowsApps:/c/ProgramData/markp/GitHubDesktop/bin:/c/Users/markp/.dotnet/tools:/c/Users/markp/AppData/Local/Microsoft/WindowsApps:/c/Users/markp/.dotnet/tools:/c/Users/markp/AppData/Roaming/npm:/c/Program Files (x86)/GitHub CLI:/c/Program Files/Azure Data Studio/bin
我不确定 Windows 是否与此等效,但是,作为一个试图解决同样问题的人,但对于 macOS,我想我应该为未来的人们提供回复。同样的理论可能也适用于 Window。
对于Linux/macOS,导致代理失败的问题是文件夹和文件的权限过于宽松(为什么错误消息不能只是说谁知道呢!)。修复很简单,来自 Ask Ubuntu 上的这个答案
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
然后使用
ssh-add
就可以按预期工作,Github 会很高兴再次与我互动!
由于您使用的是 FIPS yubikey,因此需要使用 FIPS 算法。尝试使用 rsa 或 ecdsa 生成 ssh 密钥。
解决方案来源?我运行 fips openshift 集群,除非我们使用 fips 兼容密码(rsa/ecdsa),否则我们使用部署密钥对 github 进行身份验证会失败。