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.
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.
Ajouter l’utilisateur au groupe sudo :
usermod --append --groups sudo distant_user
Ajouter la clé publique aux fichiers :
/home/distant_user/.ssh/authorized_keys
/etc/ssh/sudo_authorized_keys
(en root:root 0600)Installer le paquet libpam-ssh-agent-auth
:
apt install libpam-ssh-agent-auth
Ajouter la ligne suivante juste après la première ligne de /etc/pam.d/sudo
:
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
Defaults env_keep += "SSH_AUTH_SOCK"
Lancer l’agent SSH :
eval `ssh-agent`
.profile
.Ajouter la clé privée à l’agent :
ssh-add ~/.ssh/id_XXXXXX
.profile
.[optionnel] Configurer un hôte SSH dans ~/.ssh/config
:
Host example
HostName example.com
User distant_user
ForwardAgent yes
Se connecter à la machine distante :
# Directement
ssh -A distant_user@example.com
# Avec la configuration SSH
ssh example