huikai

生于忧患,死于安乐


Debian sudo免密配置

sudoers配置文件NOPASSWD

配置sudoers文件,/etc/sudoers/etc/sudoers.d/{xxx}

  1. {用户} ALL=(ALL:ALL) NOPASSWD:{命令(多个用,号隔开,所有命令可以用all)}

使用pam_ssh_agent_auth转发

远程主机配置

  1. 安装pam_ssh_agent_auth

    1. apt-get install libpam-ssh-agent-auth
  2. 配置/etc/pam.d/sudo文件
    在文件开头配置:

    1. auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
  3. 增加/etc/security/authorized_keys配置文件
    添加认证公钥,格式同~/.ssh/authorized_keys
    可直接复制

    1. cp ~/.ssh/authorized_keys /etc/security/
  4. 配置/etc/sudoers
    增加 pam_ssh_agent_auth 配置

    1. Defaults env_keep += "SSH_AUTH_SOCK"

本地主机配置

临时生效

ssh连接时增加-A参数

  1. ssh -A {主机}

永久生效

配置~/.ssh/config文件

  1. 针对所有主机(不推荐)

    1. Host *
    2. ForwardAgent yes
  2. 针对指定主机

    1. Host {指定主机}
    2. ForwardAgent yes

使用pam-u2f

1.安装libpam-u2f pamu2fcfg

  1. sudo apt install libpam-u2f pamu2fcfg

2.创建配置文件目录

  1. mkdir -p ~/.config/Yubico
  2. chmod 700 ~/.config/Yubico

3.注册yubikey

  1. pamu2fcfg > ~/.config/Yubico/u2f_keys
  2. chmod 600 ~/.config/Yubico/u2f_keys

4.免密配置

设置sudo免密码

  1. sudo vim /etc/pam.d/sudo

在文件中 auth 部分的顶部 添加:

  1. # 优先使用 YubiKey
  2. auth sufficient pam_u2f.so cue nouserok

设置免密码GNOME桌面登陆

  1. sudo vim /etc/pam.d/gdm-password

在文件中 auth 部分的顶部 添加:

  1. # 优先使用 YubiKey
  2. auth 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

增加判定是否是ssh登录脚本

  1. sudo vim /usr/local/bin/is_ssh.sh
  2. sudo chmod +x /usr/local/bin/is_ssh.sh

文件内容:

  1. #!/bin/bash
  2. pstree -s $$ | grep -q sshd

配置/etc/pam.d/sudo文件

在文件中 auth 部分的顶部 添加:

  1. # 如果 is_ssh.sh 返回 success,跳过后面 1 个 auth 模块
  2. auth [success=1 default=ignore] pam_exec.so quiet /usr/local/bin/is_ssh.sh
  3. # 本地u2f认证
  4. auth sufficient pam_u2f.so cue nouserok
  5. # ssh-agent认证
  6. auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys


 Debian硬盘每隔几秒读写一次导致无法硬盘休眠