GNU/Linux >> Linux Esercitazione >  >> Linux

Come far funzionare insieme le chiavi condivise .ssh/authorized_keys e sudo?

Quello che vuoi fare è possibile ma richiederà una certa esperienza in quanto dovrai compilare un modulo PAM chiamato pam-ssh-agent-auth .

Il processo è ragionevolmente semplice:

$ 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

Modifica la configurazione sudo:

$ sudo visudo

Aggiungi quanto segue:

Defaults env_keep += SSH_AUTH_SOCK

Continua modificando le impostazioni sudo PAM:

$ sudo vi /etc/pam.d/sudo

Aggiungi (appena sopra le righe @include):

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

ssh e sudo non hanno niente a che fare l'uno con l'altro. Impostazione di un ssh il metodo di autenticazione non farà nulla per sudo . sudo non capirà un ssh password.

passwd -l ha lo scopo di bloccare l'account di un utente, in modo che non possa più autenticarsi tramite password. È praticamente l'opposto di quello che vuoi, ovvero consentire all'utente di autenticarsi senza una password.

Penso che quello che vuoi sia il NOPASSWD opzione nel tuo sudoers file.

(PS, non c'è motivo di eseguire un cd comando con sudo . cd non si propaga ai processi padre, quindi non appena il sudo esce, sei tornato al punto di partenza.)

Modifica: Continui a dire che vuoi bloccare la password dell'account e vuoi che sudo capisca le chiavi pubbliche/private. Siamo spiacenti, sudo non utilizzerà le chiavi ssh. Non è ssh. Se non vuoi che gli utenti possano accedere con le loro password, penso che la risposta sia disabilitare l'autenticazione della password ssh, non bloccare l'account. Quindi puoi conservare una password per gli utenti, che possono utilizzare per sudo dopo aver effettuato l'accesso tramite ssh authorized_keys.


La risposta di Andre de Miranda fornisce una buona soluzione usando pam_ssh_agent_auth, ma le parti non sono aggiornate. In particolare il /etc/pam.d/sudo istruzioni quando si utilizzano molte versioni correnti di Linux.

Se stai utilizzando Ubuntu 12.04 preciso, in realtà ho semplificato il processo fornendo una build pam_ssh_agent_auth da un ppa:ppa:cpick/pam-ssh-agent-auth.

Puoi installare il pacchetto eseguendo:

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

Dopo l'installazione, se desideri utilizzare questo modulo PAM con sudo dovrai configurare le impostazioni di sudo e la configurazione PAM, in Ubuntu 12.04 preciso puoi farlo creando i seguenti due file:

/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

Se stai usando chef, il processo di cui sopra può essere automatizzato con il mio libro di cucina, che si trova in una delle due posizioni seguenti:
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth.

Il files del ricettario directory contiene il /etc/pam.d/sudo e /etc/sudoers.d/pam-ssh-agent-auth file descritti sopra che funzionano esattamente con Ubuntu 12.04 e dovrebbero essere un utile punto di partenza quando si utilizzano altre versioni/distribuzioni.


Linux
  1. Come impostare le chiavi SSH

  2. Come far funzionare i Permalink di WordPress in Nginx

  3. Come rendere accessibile una directory condivisa tramite Sftp?

  4. Come configurare le chiavi SSH su Ubuntu 18.04

  5. Come creare e applicare la patch SVN?

Nozioni di base su Linux:come creare e installare chiavi SSH sulla shell

Come installare TBB dal sorgente su Linux e farlo funzionare

Ottenere sudo e nohup per lavorare insieme

SSH con authorized_keys su un sistema Ubuntu con homedir crittografato?

chiavi ssh ssh-agent bash e ssh-add

Come funzionano i numeri SO (oggetto condiviso)?