GNU/Linux >> Tutoriels Linux >  >> Linux

Comment faire en sorte que les clés partagées .ssh/authorized_keys et sudo fonctionnent ensemble ?

Ce que vous voulez faire est possible mais cela nécessitera une certaine expérience car vous devrez compiler un module PAM appelé pam-ssh-agent-auth .

Le processus est relativement simple :

$ sudo aptitude install libssl-dev libpam0g-dev build-essential checkinstall
$ wget "http://downloads.sourceforge.net/project/pamsshagentauth/pam_ssh_agent_auth/v0.9.3/pam_ssh_agent_auth-0.9.3.tar.bz2"
$ tar -xjvf pam_ssh_agent_auth-0.9.3.tar.bz2
$ cd pam_ssh_agent_auth-0.9.3

$ ./configure --libexecdir=/lib/security --with-mantype=man

$ make
$ sudo checkinstall

Modifiez la configuration sudo :

$ sudo visudo

Ajoutez ce qui suit :

Defaults env_keep += SSH_AUTH_SOCK

Continuez en modifiant les paramètres sudo PAM :

$ sudo vi /etc/pam.d/sudo

Ajoutez (juste au-dessus des lignes @include) :

**auth [success=2 default=ignore] pam_ssh_agent_auth.so file=~/.ssh/authorized_keys**
@include common-auth
@include common-account

ssh et sudo n'ont rien à voir les uns avec les autres. Configurer un ssh la méthode d'authentification ne fera rien pour sudo . sudo ne comprendra pas un ssh mot de passe.

passwd -l est destiné à verrouiller le compte d'un utilisateur, afin qu'il ne puisse plus s'authentifier par mot de passe. C'est à peu près le contraire de ce que vous voulez, qui permet à l'utilisateur de s'authentifier sans mot de passe.

Je pense que ce que vous voulez, c'est le NOPASSWD option dans votre sudoers fichier.

(PS, il n'y a aucune raison d'exécuter un cd commande avec sudo . cd ne se propage pas aux processus parents, donc dès que le sudo quitte, vous êtes de retour là où vous avez commencé.)

Modifier : Vous continuez à dire que vous voulez verrouiller le mot de passe du compte et que sudo doit comprendre les clés publiques/privées. Désolé, sudo n'utilisera pas les clés ssh. Ce n'est pas ssh. Si vous ne voulez pas que les utilisateurs puissent se connecter avec leurs mots de passe, je pense que la réponse est de désactiver l'authentification par mot de passe ssh, et non de verrouiller le compte. Ensuite, vous pouvez conserver un mot de passe pour les utilisateurs, qu'ils peuvent utiliser pour sudo après s'être connectés via ssh authorized_keys.


La réponse d'André de Miranda fournit une solution intéressante en utilisant pam_ssh_agent_auth, mais certaines parties sont obsolètes. En particulier le /etc/pam.d/sudo instructions lors de l'utilisation de nombreuses versions Linux actuelles.

Si vous utilisez Ubuntu 12.04 précis, j'ai en fait simplifié le processus en fournissant une version pam_ssh_agent_auth à partir d'un ppa :ppa:cpick/pam-ssh-agent-auth.

Vous pouvez installer le package en exécutant :

sudo add-apt-repository ppa:cpick/pam-ssh-agent-auth
sudo apt-get install pam-ssh-agent-auth

Après l'installation, si vous souhaitez utiliser ce module PAM avec sudo, vous devrez configurer les paramètres de sudo et la configuration PAM, dans Ubuntu 12.04 précis, vous pouvez le faire en créant les deux fichiers suivants :

/etc/sudoers.d/pam-ssh-agent-auth :

Defaults    env_keep+="SSH_AUTH_SOCK"

/etc/pam.d/sudo :

ent#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys
@include common-auth
@include common-account
@include common-session-noninteractive

Si vous utilisez chef, le processus ci-dessus peut être automatisé avec mon livre de recettes, disponible à l'un des deux emplacements suivants :
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth.

Le files du livre de cuisine répertoire contient le /etc/pam.d/sudo et /etc/sudoers.d/pam-ssh-agent-auth les fichiers décrits ci-dessus qui fonctionnent avec Ubuntu 12.04 précis et devraient être un point de départ utile lors de l'utilisation d'autres versions/distributions.


Linux
  1. Qu'est-ce qu'un serveur Web et comment fonctionne un serveur Web ?

  2. Comment faire fonctionner les permaliens WordPress dans Nginx

  3. Comment fonctionnent les composants internes de Sudo ?

  4. Comment rendre un répertoire partagé accessible par Sftp ?

  5. Comment configurer des clés SSH sur Ubuntu 18.04

Principes de base de Linux :Comment créer et installer des clés SSH sur le shell

Faire travailler sudo et nohup ensemble

Comment puis-je faire une session sudo d'une heure et non de quelques minutes dans Ubuntu 10.04 ?

clés ssh ssh-agent bash et ssh-add

Comment fonctionnent les numéros SO (objet partagé) ?

Comment faire expirer les règles iptables ?