使用YubiKey为SSH登录VPS云服务器创建2FA双因素验证

前文我们对 YubiKey上手做了简单配置,设置了PIN码和PUK码,这里详细介绍下YubiKey的实际应用,本文将使用 YubiKey 做为 2FA双因素验证 基质,在使用 Xshell 或 PuTTY 远程 SSH 登录 Linux (Ubuntu)系统时,触摸 YubiKey 进行2FA双因素验证。
先决条件准备物料:
Yubikey 一枚,我使用 Yubikey 5 NFC ,已经设置PIN码;远程Linux服务器 VPS,已知root用户和密码,本文以 Ubuntu 22.04 系统示例;终端工具 Xshell 或 PuTTY ,WindowsPowerShell。Yubikey PAM 安装包,yum安装或官网下载。

Yubikey 5 NFC 与 U盘 大小对比
从VPS云服务器提供商处获取root用户和密码,或者“密钥对”,使用Xshell终端工具登录服务器。

1,更新一下服务器:
sudo apt-get update && sudo apt-get upgrade
2,需要使用 Yubikey OTP (一次性密码)机制,所以前往官网获取 Yubico 的 API,填写你的常用邮箱,将鼠标的光标放在 “YubiKey OTP” 字段,电脑插入 Yubikey 5 nfc,轻按 Yubikey 触摸点 N秒,会自动生成一串字符,点击“Get API key”,获取 Client ID 和 Secret Key,保存备用。

获取 Yubico API key
3,输入以下命令在服务器安装 Yubikey PAM:
Ubuntu:
sudo add-apt-repository ppa:yubico/stable
sudo apt-get update
sudo apt-get install libpam-yubico
Fedora/EPEL:
sudo yum install pam_yubico
安装完成,检查确保 pam_yubico.so 文件在 lib/security 目录,/usr/local/lib/security 目录。
4,使用 WindowsPowerShell 或 Xshell,PuTTY等本地终端,或登录官网 Modhex Converter 获取您的 YubiKey token ID(注意与 Yubikey API Client ID不是同一个)。

获取 Yubikey token ID
通过触摸 Yubikey 5 nfc ,会自动生成一段OTP一次性密码,删除末尾32位字符,保留前12位字符,该字符就是您的 YubiKey token ID,保存备用。从官网 获取的 Modhex Converter 也是同理。
5,登录云服务器,创建 /etc/ssh/authorized_yubikeys 文件:
sudo touch /etc/ssh/authorized_yubikeys
编辑该文件,使用这个格式,为服务器上“需要双因素验证登录”的用户创建配置:
<user name>:<YubiKey token ID1>:<YubiKey token ID2>
例如:
root:cccsytopamzx
如果该用户有多个Yubikey 设备:
root:qnusytopamzx:cccxucyvusys:ccczhzjxjxkc

6,编辑系统文件 /etc/pam.d/sshd 文件,加入“API Client ID”和“API Secret Key”,以及 authorized_yubikeys 文件路径。
auth required pam_yubico.so id=<client id> key=<secret key> authfile=/etc/ssh/authorized_yubikeys
例如:
auth required pam_yubico.so id=88888 key=aaaaa55555aaaaa55555aaaaa authfile=/etc/ssh/authorized_yubikeys
7,编辑系统文件 /etc/ssh/sshd_config 文件:
ChallengeResponseAuthentication yes
检查确保以下几项也为YES:
UsePAM yes
PasswordAuthentication yes
PermitRootLogin yes
如果想排除账号密码,只使用 Yubiyek 单因素登录,ChallengeResponseAuthentication 设置为 no。
8,重启sshd服务:
sudo systemctl restart sshd
9,使用 WindowsPowerShell 终端软件 SSH登录 云服务器VPS Ubuntu 22.04 上的root用户:
ssh root@ip地址
提示“ YubiKey for `root’: ” 时,电脑插入 Yubikey 5 nfc,触摸Yubikey 金属片N秒钟,自动输入并验证 Yubikey OPT一次性密码,验证成功自动换行提示输入“ Password: ”,输入用户root 的密码即可,如下图:

WindowsPowerShell SSH Yubikey
10,使用 Xshell 软件 SSH 远程登录 云服务器VPS Ubuntu 22.04 上的root用户:
在弹出窗口中输入用户名“root”:

Xshell SSH Yubikey
验证方法中选择“Keyboard Interactive”:

Xshell SSH Yubikey
提示“ YubiKey for `root’: ” 时,鼠标光标放在输入栏,电脑插入 Yubikey 5 nfc,触摸Yubikey 金属片N秒钟。提示输入“ Password: ”,输入用户root 的密码即可,如下图:

Xshell SSH Yubikey
或在“用户身份验证”中,输入root用户和密码,并将“Keyboard Interactive”和“Password”同时打勾,将“Keyboard Interactive”上移,排序在第一位即可。
Tags2FA Linux OTP SSH Ubuntu YubiKey 双因素验证 安全密钥


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/53729/