使用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
  1. 按create key后,windows会弹出确认框,OK确认
  1. 出现第二个确认框,继续OK
  1. 这里输入前面在Yubikey Manager里设置好的PIN
  1. 手指按Yubikey确认
  1. 在弹出窗口按Yes,这就把新生成的可以导入了当前Putty session

C.配置服务器端openssh

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

  1. 接着上面的步骤,回到certificate页面,点击copy to clipboard
  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
  1. 输入PIN
  1. 导入成功窗口弹出,点OK
  1. 回到certificate页面,点击set FIDO key。弹出窗口点OK
  1. 这时应该是下面这个界面,点击OPEN,进行连接
  1. 输入用户名按回车后,会跳出下面这个窗口,手指按Yubikey进行确认
  1. 这样就登录了远程服务器。

2 评论

留下评论

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