Utiliser sudo avec une clé publique

Menu principal

Il est possible de prolonger l’utilisation de la clé publique utilisée pour se connecter à un utilisateur afin d’utiliser sudo sans mot de passe.

Comment est-ce possible ?

En faisant tourner un agent SSH sur la machine locale et en permettant à la commande SSH de faire suivre l’agent sur la machine distante.

Sur la machine distante, il faut ensuite permettre à sudo d’utiliser cet agent SSH comme moyen de vérification.

Sur la machine distante

Ajouter l’utilisateur au groupe sudo :

shell (root)
usermod --append --groups sudo distant_user

Ajouter la clé publique aux fichiers :

Installer le paquet libpam-ssh-agent-auth :

shell(root)
apt install libpam-ssh-agent-auth

Ajouter la ligne suivante juste après la première ligne de /etc/pam.d/sudo :

vi (root)
auth sufficient pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys

Créer le fichier /etc/sudoers.d/keep-ssh-auth-sock-env-variable

vi (root)
Defaults env_keep += "SSH_AUTH_SOCK"

Sur la machine locale

Lancer l’agent SSH :

shell (user)
eval `ssh-agent`
Cette commande peut être placée dans un .profile.

Ajouter la clé privée à l’agent :

shell (user)
ssh-add ~/.ssh/id_XXXXXX
Cette commande peut être placée dans un .profile.

[optionnel] Configurer un hôte SSH dans ~/.ssh/config :

vi
Host example
    HostName example.com
    User distant_user
    ForwardAgent yes 

Se connecter à la machine distante :

shell (user)
# Directement
ssh -A distant_user@example.com


# Avec la configuration SSH
ssh example