Windows电脑使用yubikey安全密钥进行SSH登录服务器

要使用FIDO2硬件密钥,必须使用OpenSSH 8.2或更高版本。要从带有ssh-keygen -K的安全密钥中下载驻留密钥,必须使用OpenSSH 8.3或更高版本。要使用verify-required选项,必须安装OpenSSH 8.4或更高版本。该选项要求对每项操作进行用户验证(输入PIN码)。Windows OpenSSH客户端在8.9版本中加入了FIDO支持功能;此前的版本则不支持该功能。

1 请检查您的 OpenSSH 版本:

ssh -V

C:\Windows\System32\OpenSSH\ssh.exe -V

2 生成您的FIDO2 SSH密钥

为了获得最安全的设置方式,请生成一个ed25519-sk驻留密钥。该密钥每次使用时都需要输入PIN码。

#新版本的yubikey一般用这条命令,XXXXXX替换成你自己电脑的用户名,openssh-sk替换成你想命名的密钥名称
ssh-keygen -t ed25519-sk -f C:\Users\XXXXXX\.ssh\openssh-sk -O resident -O application=ssh:openssh -O verify-required -C your_email@example.com

#老版本的yubikey可以用这条命令
ssh-keygen -t ecdsa-sk -O resident -O verify-required -C your_email@example.com

驻留密钥需要使用5.2.3及以上版本的固件,同时还需要输入FIDO2 PIN码。如果您不需要在其他设备上恢复该密钥,可以省略-O resident,从而创建一个非驻留密钥。这样一来,该密钥的凭证信息将仅存储在磁盘上的密钥处理文件中。
其他选项
-O application=ssh:<name>:用于对凭证进行标记,这样就可以在同一个YubiKey上存储多个密钥,而不会导致数据被覆盖。该标记名称必须以ssh:开头,例如-O application=ssh:github-O application=ssh:work-server

3 复制您的公钥

(1) powershell执行命令复制公钥

Get-Content $env:USERPROFILE\.ssh\id_ed25519_sk.pub | Set-Clipboard

(2) 在 GitHub 上添加该密钥:进入“设置”>“SSH和GPG密钥”,选择“新建SSH密钥”,粘贴密钥内容,为其命名,然后保存即可。

ssh -T -i C:\Users\CP0234\.ssh\id_ed25519_sk git@github.com

系统会提示您触摸YubiKey设备(如有必要,还需输入PIN码)。

4 在新机器上使用驻留密钥

驻留密钥使得数据可以轻松移植。在新的机器上使用时:请确保已安装 OpenSSH 8.3 或更高版本(下载驻留密钥需要使用8.3或更高版本)。插入您的 YubiKey,然后运行该程序(在Windows系统中,请使用以管理员身份运行的命令提示符):ssh-keygen -K
该操作会检索出驻留的密钥,并生成相应的处理程序及公钥文件。可以直接使用这些文件,或将其添加到ssh-agent中。

5 在家目录的.ssh目录下创建config文件并进行配置

Host gb
    HostName github.com
    User git
    IdentityFile ~\.ssh\githubuser-sk
    AddKeysToAgent yes
	
	
Host vps
    HostName 127.0.0.1
    User root
    IdentityFile ~\.ssh\127.0.0.1-sk
    AddKeysToAgent yes

配置完成后,可以使用ssh -T gb进行测试。

posted @ 2026-09-15 01:03  小孩子才做选择  阅读(7)  评论(0)    收藏  举报