Estoy escribiendo un script que es para iniciar sesión en un montón de máquinas remotas y ejecutar un comando en ellas. He configurado las claves para que el usuario que ejecuta el script no tenga que escribir la contraseña de cada máquina, sino que solo escriba la frase de contraseña al comienzo del script.
El problema es que el comando en las máquinas remotas requiere sudo
ejecutarse. Y al mismo tiempo, el objetivo de la secuencia de comandos es librar al usuario de tener que escribir las contraseñas varias veces. ¿Hay alguna forma de evitar escribir la contraseña sudo
? Cambiar los permisos del comando en las máquinas remotas no es una opción.
/etc/sudoers
y también se puede editar ejecutandosudo /usr/sbin/visudo
%wesho ALL=NOPASSWD: /sbin/service httpd
@Wesho,
Puede hacer lo que DaDaDom dijo (funcionará y es simple) o puede que desee reforzar su configuración mediante el uso de un módulo PAM llamado pam-ssh-agent-auth .
El proceso para los sistemas Debian / Ubuntu es razonablemente simple:
Editar la configuración de sudo:
Agregue lo siguiente:
Continúe cambiando la configuración de sudo PAM:
Agregue la línea de autenticación justo arriba de las 2 líneas @include existentes :
Voilà!
sudo sin autenticación pero confiando en el Agente SSH para realizar una autenticación sólida, en lugar de simplemente eliminar la contraseña de la configuración de sudo.
fuente
authorized_keys
DEBE estar bloqueado para que solo la raíz pueda cambiarlo; de lo contrario, también podría deshabilitar la contraseña.La respuesta de Andre de Miranda proporciona una buena solución usando pam_ssh_agent_auth , pero las partes están desactualizadas. Particularmente las
/etc/pam.d/sudo
instrucciones cuando se usan muchas versiones actuales de Linux.Si está ejecutando Ubuntu 12.04 con precisión, en realidad he simplificado el proceso al proporcionar una compilación pam_ssh_agent_auth a partir de una ppa: ppa: cpick / pam-ssh-agent-auth .
Puede instalar el paquete ejecutando:
Después de la instalación, si desea utilizar este módulo PAM con sudo, tendrá que configurar los ajustes de sudo y la configuración PAM, en Ubuntu 12.04 preciso puede hacerlo creando los siguientes dos archivos:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
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 / libros de cocina / pam-ssh-agent-auth .
El
files
directorio del libro de cocina contiene los archivos/etc/pam.d/sudo
y/etc/sudoers.d/pam-ssh-agent-auth
descritos anteriormente que funcionan con Ubuntu 12.04 precisa y debería ser un punto de partida útil cuando se usan otras versiones / distribuciones.fuente