GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo hacer que las claves compartidas .ssh/authorized_keys y sudo funcionen juntas?

Lo que desea hacer es posible, pero requerirá algo de experiencia, ya que deberá compilar un módulo PAM llamado pam-ssh-agent-auth .

El proceso es razonablemente 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

Edite la configuración de sudo:

$ sudo visudo

Agrega lo siguiente:

Defaults env_keep += SSH_AUTH_SOCK

Continúe cambiando la configuración de sudo PAM:

$ sudo vi /etc/pam.d/sudo

Agregue (justo arriba de las líneas @include):

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

ssh y sudo no tienen nada que ver el uno con el otro. Configuración de un ssh el método de autenticación no va a hacer nada por sudo . sudo no va a entender un ssh contraseña.

passwd -l está destinado a bloquear la cuenta de un usuario, para que ya no pueda autenticarse por contraseña. Eso es más o menos lo contrario de lo que quieres, que es permitir que el usuario se autentique sin contraseña.

Creo que lo que quieres es el NOPASSWD opción en su sudoers archivo.

(PD, no hay motivo para ejecutar un cd comando con sudo . cd no se propaga a los procesos principales, por lo que tan pronto como sudo sale, estás de vuelta donde empezaste.)

Editar: Sigues diciendo que quieres bloquear la contraseña de la cuenta y quieres que Sudo entienda las claves públicas/privadas. Lo siento, sudo no va a usar claves ssh. No es ssh. Si no desea que los usuarios puedan iniciar sesión con sus contraseñas, creo que la respuesta es deshabilitar la autenticación de contraseña ssh, no bloquear la cuenta. Luego, puede conservar una contraseña para los usuarios, que pueden usar para sudo después de iniciar sesión a través de sshauthorized_keys.


La respuesta de Andre de Miranda proporciona una buena solución usando pam_ssh_agent_auth, pero las partes están desactualizadas. Particularmente el /etc/pam.d/sudo instrucciones al usar muchas versiones actuales de Linux.

Si está ejecutando Ubuntu 12.04 con precisión, en realidad he simplificado el proceso proporcionando una compilación pam_ssh_agent_auth a partir de un ppa:ppa:cpick/pam-ssh-agent-auth.

Puede instalar el paquete ejecutando:

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

Después de la instalación, si desea utilizar este módulo PAM con sudo, deberá configurar los ajustes de sudo y la configuración de PAM; en Ubuntu 12.04, puede hacerlo creando los siguientes dos archivos:

/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 usa chef, el proceso anterior se puede automatizar con mi libro de cocina, que se encuentra en cualquiera de las dos ubicaciones siguientes:
https://github.com/cpick/pam-ssh-agent-auth
http://community.opscode.com/cookbooks/pam-ssh-agent-auth.

El libro de cocina files directorio contiene el /etc/pam.d/sudo y /etc/sudoers.d/pam-ssh-agent-auth archivos descritos anteriormente que funcionan con Ubuntu 12.04 de forma precisa y deberían ser un punto de partida útil cuando se utilizan otras versiones/distribuciones.


Linux
  1. ¿Qué es un servidor web y cómo funciona un servidor web?

  2. ¿Cómo permitir SFTP y no permitir SSH?

  3. ¿Cómo funcionan las partes internas de Sudo?

  4. ¿Cómo hacer que un directorio compartido sea accesible mediante Sftp?

  5. Ssh:¿cómo funciona TCP-keepalive en Ssh?

Conceptos básicos de Linux:cómo crear e instalar claves SSH en el Shell

Cómo hacer que los enlaces permanentes de WordPress funcionen en Nginx

Cómo configurar claves SSH en Ubuntu 18.04

Cómo configurar claves SSH en Debian

Cómo instalar TBB desde la fuente en Linux y hacer que funcione

¿Cómo funcionan los números SO (objeto compartido)?