Você pode vincular a sudo
authentication ao conhecimento de uma chave secreta gerenciada por ssh-agent
. Isso pode ser feito através do PAM e do % módulopam_ssh_agent_auth
. Você pode gerar um par de chaves separado para usar exclusivamente para a autenticação sudo
. A senha será a senha usada para criptografar a chave privada.
Para configurar o módulo pam_ssh_agent_auth
, adicione o seguinte a /etc/pam.d/sudo
antes de qualquer outra diretiva auth
ou include
:
auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
Você também precisará informar sudo
para não eliminar a variável de ambiente SSH_AUTH_SOCK
adicionando o seguinte a /etc/sudoers
(via visudo
):
Defaults env_keep += "SSH_AUTH_SOCK"
Agora, adicione a parte pública da chave que você deseja que atue como o token de autenticação para /etc/security/authorized_keys
. Provavelmente, você também deseja adicionar a opção -t
a ssh-add
com tempo de vida curto adequado ao adicionar a chave para que ssh-agent
imite o comportamento padrão sudo
de solicitar confirmação de senha se um certo tempo tiver passado desde a última inserção ou até mesmo usar a opção -c
para acionar a confirmação da senha cada vez que a chave é usada para autenticação.
Observe que o padrão no Ubuntu é usar Chaveiro do GNOME para o gerenciamento de chaves SSH, que, até onde eu sei, atualmente não permite que o tempo limite da chave seja definir . Você pode desativar completamente o gerenciamento de chaves SSH no Keyring do GNOME adicionando o seguinte a ~/.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
que substitui /etc/xdg/autostart/gnome-keyring-ssh.desktop
, a diferença chave é a linha:
X-GNOME-Autostart-enabled=false