使用Yubikey和Putty无密码登录SSH

这个应该算是Yubikey的进阶用法了。虽然我的Yubikey是打折时白菜价买的,但我也不想它只被用来做2步验证用。

丑话说在前头,整个过程相当麻烦,如果不是刚需,又不想折腾,完全没有使用的必要。

A.给Yubikey设置一个Fido2的PIN

  1. 首先要在windows里安装yubikey manager。
    下载地址是:https://www.yubico.com/support/download/yubikey-manager/
  2. 安装好后,进入程序,插上yubikey
  3. 进入application ->fido2,设置好PIN

B. 生成FIDO key

  1. 这里要用到Putty-CAC,它是Putty的一个分支,添加了增加了使用Windows证书API(CAPI)、公钥密码学标准(PKCS)库或快速身份验证在线(FIDO)密钥来执行SSH公钥认证的能力。下载地址是:https://github.com/NoMoreFood/putty-cac
  2. 打开Putty CAC,进入connection->SSH->Certificate->FIDO Tools
  3. Key Algorthm选择ssh-ed25519, 然后Create Key
Yubikey 和 PuTTY 配置无密码登录 SSH 教程界面
  1. 按create key后,windows会弹出确认框,OK确认
SSH 连接配置与 Yubikey 登录设置步骤示意
  1. 出现第二个确认框,继续OK
PuTTY 中导入 SSH 密钥并配置登录参数
  1. 这里输入前面在Yubikey Manager里设置好的PIN
使用 Yubikey 进行 SSH 免密码登录的配置窗口
  1. 手指按Yubikey确认
SSH 公钥认证与 Yubikey 安全密钥设置界面
  1. 在弹出窗口按Yes,这就把新生成的可以导入了当前Putty session
PuTTY 连接服务器前的 SSH 认证设置截图

C.配置服务器端openssh

首先说明一下,我服务器端使用的是Ubuntu22.04,Openssh 版本8.9

  1. 接着上面的步骤,回到certificate页面,点击copy to clipboard
Yubikey 绑定 SSH 密钥的操作步骤示意图
  1. 这样我们的剪贴板里就有了一个下面格式的key
sk-ssh-ed25519@openssh.com AAAAGn*****************************************************************************************************= FIDO:ssh: ssh:
  1. 登录服务器,将上面key黏贴到下面这个文件里
~/.ssh/authorized_keys

所有的配置就到此结束了。

什么,你觉得还好?那使用过程也很复杂

D.使用Yubikey登录远程服务器

  1. 在电脑上插入Yubikey
  2. 打开Putty-CAC
  3. 输入服务器的IP或机器名
  4. 进入connection->SSH->Certificate->FIDO Tools,点击Import keys,弹出窗口点OK
SSH 无密码登录配置完成后的 PuTTY 界面
  1. 输入PIN
使用 Yubikey 验证身份登录 SSH 的提示窗口
  1. 导入成功窗口弹出,点OK
PuTTY 配合 Yubikey 实现 SSH 安全登录说明
  1. 回到certificate页面,点击set FIDO key。弹出窗口点OK
SSH 密钥生成与 Yubikey 认证配置步骤截图
  1. 这时应该是下面这个界面,点击OPEN,进行连接
Yubikey 无密码登录 SSH 的设置结果展示
  1. 输入用户名按回车后,会跳出下面这个窗口,手指按Yubikey进行确认
使用 PuTTY 和 Yubikey 连接 SSH 服务器示意
  1. 这样就登录了远程服务器。

3 条评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注