配置sudoers文件,/etc/sudoers或/etc/sudoers.d/{xxx}
{用户} ALL=(ALL:ALL) NOPASSWD:{命令(多个用,号隔开,所有命令可以用all)}
pam_ssh_agent_auth转发安装pam_ssh_agent_auth
apt-get install libpam-ssh-agent-auth
配置/etc/pam.d/sudo文件
在文件开头配置:
auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
增加/etc/security/authorized_keys配置文件
添加认证公钥,格式同~/.ssh/authorized_keys
可直接复制
cp ~/.ssh/authorized_keys /etc/security/
配置/etc/sudoers
增加 pam_ssh_agent_auth 配置
Defaults env_keep += "SSH_AUTH_SOCK"
ssh连接时增加-A参数
ssh -A {主机}
配置~/.ssh/config文件
针对所有主机(不推荐)
Host *ForwardAgent yes
针对指定主机
Host {指定主机}ForwardAgent yes
sudo apt install libpam-u2f pamu2fcfg
mkdir -p ~/.config/Yubicochmod 700 ~/.config/Yubico
pamu2fcfg > ~/.config/Yubico/u2f_keyschmod 600 ~/.config/Yubico/u2f_keys
sudo vim /etc/pam.d/sudo
在文件中 auth 部分的顶部 添加:
# 优先使用 YubiKeyauth sufficient pam_u2f.so cue nouserok
sudo vim /etc/pam.d/gdm-password
在文件中 auth 部分的顶部 添加:
# 优先使用 YubiKeyauth sufficient pam_u2f.so cue nouserok pinverification=1
说明:
| 参数 | 说明 |
|---|---|
cue |
显示提示信息 |
nouserok |
允许没配置u2f的用户登录 |
pinverification=1 |
强制验证PIN |
| 场景 | 首选认证 | 失败后 |
|---|---|---|
| SSH 会话 sudo | pam_ssh_agent_auth | 用户密码 |
| 本地 sudo | pam_u2f | pam_ssh_agent_auth ->用户密码 |
| 未配置 U2F 用户 | 直接密码 | 无 |
需要先完成 使用pam-u2f 部分的步骤1-步骤3
sudo vim /usr/local/bin/is_ssh.shsudo chmod +x /usr/local/bin/is_ssh.sh
文件内容:
#!/bin/bashpstree -s $$ | grep -q sshd
/etc/pam.d/sudo文件在文件中 auth 部分的顶部 添加:
# 如果 is_ssh.sh 返回 success,跳过后面 1 个 auth 模块auth [success=1 default=ignore] pam_exec.so quiet /usr/local/bin/is_ssh.sh# 本地u2f认证auth sufficient pam_u2f.so cue nouserok# ssh-agent认证auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys