如何允许使用备用密码通过 `sudo` 进行身份验证?

Vin*_*ary 3 authentication ubuntu sudo

我的公司为我的 Ubuntu 系统提供了一个长密码。sudo重复验证时输入此密码很麻烦。

我是否可以sudo使用与我的用户帐户关联的密码以外的sudo密码进行身份验证,或者完全不使用密码身份验证?

Tho*_*man 6

您可以将sudo身份验证与由 管理的密钥的知识联系起来ssh-agent。这可以通过PAMpam_ssh_agent_auth模块来实现。您可以生成单独的密钥对以专门用于sudo身份验证。密码将是用于加密私钥的密码。

要配置pam_ssh_agent_auth模块,/etc/pam.d/sudo 任何其他authinclude指令之前添加以下内容:

auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
Run Code Online (Sandbox Code Playgroud)

您还需要通过将以下内容添加到(via )来告诉sudo不要删除SSH_AUTH_SOCK环境变量:/etc/sudoersvisudo

Defaults    env_keep += "SSH_AUTH_SOCK"
Run Code Online (Sandbox Code Playgroud)

现在将要用作身份验证令牌的密钥的公共部分添加到/etc/security/authorized_keys。您可能还希望在添加密钥时将-t开关添加到ssh-add合适的短生命周期,以ssh-agent模拟sudo自上次输入后经过特定时间后提示密码确认的默认行为,甚至使用-c开关触发密码每次使用密钥进行身份验证时进行确认。

请注意,Ubuntu 中的默认设置是使用GNOME 密钥环进行 SSH 密钥管理,据我所知,目前不允许设置密钥超时。您可以通过将以下内容添加到 GNOME Keyring 中完全禁用 SSH 密钥管理~/.config/autostart/gnome-keyring-ssh.desktop

[Desktop Entry]
Type=Application
Name=SSH Key Agent
Comment=GNOME Keyring: SSH Agent
Exec=/usr/bin/gnome-keyring-daemon --start --components=ssh
OnlyShowIn=GNOME;Unity;MATE;
X-GNOME-Autostart-Phase=Initialization
X-GNOME-AutoRestart=false
X-GNOME-Autostart-Notify=true
X-GNOME-Autostart-enabled=false
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-keyring
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.10.1
NoDisplay=true
X-Ubuntu-Gettext-Domain=gnome-keyring
Run Code Online (Sandbox Code Playgroud)

它覆盖/etc/xdg/autostart/gnome-keyring-ssh.desktop,主要区别在于该行:

X-GNOME-Autostart-enabled=false
Run Code Online (Sandbox Code Playgroud)