
Necesito configurar una máquina para que la instalación del software pueda automatizarse de forma remota mediante SSH. Siguientela wiki, pude configurar claves SSH para que mi usuario pueda acceder a la máquina sin contraseña, pero aún necesito ingresar mi contraseña manualmente cuando uso sudo
, lo que obviamente no debería ser necesario en un proceso automatizado.
Aunque /etc/ssh/sshd_config
tengo PermitRootLogin yes
, parece que no puedo iniciar sesión como root, presumiblemente porque no es una cuenta "real" con una contraseña separada.
¿Cómo configuro las claves SSH para que un proceso pueda iniciar sesión de forma remota como root en Ubuntu?
Respuesta1
Parte 1: clave SSH sin contraseña
Para configurar una conexión SSH sin contraseña para el usuario root, necesita tener acceso root en el servidor. El método más fácil estemporalmentePermita que root inicie sesión a través de ssh mediante contraseña. De una forma u otra, necesita acceso de root en el servidor para hacer esto. Si no tiene acceso raíz en el servidor, comuníquese con el administrador del servidor para obtener ayuda.
En el cliente (desde donde realiza ssh)
Primero cree una clave ssh sin contraseña. Le sugiero encarecidamente que le dé un nombre en lugar de utilizar el predeterminado.
ssh-keygen -f foo
La opción -f especifica un nombre de archivo, foo es un ejemplo, use el nombre que desee.
Cuando se le solicite una contraseña, simplemente presione la tecla Intro y generará una clave sin contraseña.
A continuación, debe transferir la clave al servidor. El método más sencillo es utilizar ssh-copy-id
. Para hacer esto, debe permitir temporalmente que root ingrese mediante ssh al servidor.
En el servidor (donde haces ssh TO)
editar/etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Asegúrese de permitir que root inicie sesión con la siguiente sintaxis
PasswordAuthentication yes
PermitRootLogin yes
Reiniciar el servidor
sudo service ssh restart
Establezca una contraseña de root, use una segura
sudo passwd
Sobre el cliente:
Desde el cliente, transfiera la clave al servidor.
ssh-copy-id -i ~/.ssh/foo root@server
cambie "foo" el nombre de su clave e ingrese la contraseña raíz de su servidor cuando se le solicite.
prueba la clave
ssh -i ~/.ssh/foo root@server
Suponiendo que funcione, elimine la contraseña de root y desactive el inicio de sesión con contraseña.
En el servidor:
sudo passwd -l root
Editar/etc/ssh/sshd_config
sudo nano `/etc/ssh/sshd_config`
Cambie lo siguiente:
PasswordAuthentication no
PermitRootLogin without-password
Reiniciar el servidor
sudo service ssh restart
En el cliente (Prueba):
Ahora debería poder ingresar mediante ssh con su clave sin contraseña y no debería poder ingresar como cualquier usuario sin una clave.
ssh -i ~/.ssh/foo root@server
Parte 2: ejecutar comandos mediante sudo sin ingresar una contraseña
Configura sudo para permitirle ejecutar comandos sin contraseña.
Esto se responde aquí en dos lugares:
- ¿Cómo ejecuto comandos sudo específicos sin contraseña?
- ¿Cómo ejecutar el comando sudo sin contraseña?
De los dos, sugiero permitir la menor cantidad de comandos posible (primera respuesta) en lugar de todos los comandos (segunda respuesta).
Respuesta2
Estás confundiendo dos cosas diferentes:
El registro sin contraseña se utiliza para garantizar que las personas no puedan iniciar sesión en su sistema de forma remota adivinando su contraseña. Si puede enviar ssh nombre de usuario@máquina y conectarse sin contraseña, esto está configurado correctamente y no tiene nada más que ver con esto.
sudo
se utiliza para permitir que una cuenta de usuario normal haga algo con permisos de superusuario. Estehacerequieren que el usuario escriba su contraseña. Esto sucede tanto si está conectado de forma remota (a través de SSH sin contraseña o protegido con contraseña) como si está conectado localmente en la máquina. Está intentando configurar sudo
para que no solicite su contraseña, lo cual no se recomienda, pero puede aprender cómo hacerlo a través de una respuesta comohttps://askubuntu.com/a/74083/6161
Nota para futuros lectores de esta respuesta:
Mi respuesta anterior no responde a la pregunta real del autor original, describe lo quedeberíahazlo en su lugar. Si usteden realidadSi desea permitir conexiones remotas directamente a la cuenta raíz, debe habilitar la cuenta raíz (consulte mi comentario a continuación). De nuevo, déjame decirNOpermitir inicios de sesión remotos en su cuenta raíz.
Respuesta3
P. Inicie sesión en el host remoto como usuario root utilizando SSH sin contraseña (por ejemplo, ssh root@remotehost_ip)
R. Para iniciar sesión en un host remoto como usuario root usando SSH sin contraseña, siga los pasos a continuación.
1er paso:
Primero debe compartir la clave pública del usuario local con el archivo de claves_autorizadas del usuario raíz del host remoto. Hay muchas maneras de hacerlo, aquí tienes un ejemplo.
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
O simplemente puede copiar y pegar el contenido de su clave pública en el archivo de claves_autorizadas del usuario raíz del host remoto.
2do paso:
Configure ssh para permitir el inicio de sesión sin contraseña en un host remoto. Inicie sesión en el host remoto y edite el archivo /etc/ssh/sshd_config y luego reinicie el servicio ssh. No olvides comentar "PermitRootLogin sí".
#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no
#service ssh restart
Comenta #PermitRootLogin sí
3er paso:
Pruebe su conexión desde su máquina local utilizando un usuario cuya clave pública se compartió anteriormente.
$ssh root@remotehost_ip
Respuesta4
PermitRootLogin controla si el usuario llamado "root" (para ser precisos: cualquier usuario con UID 0) puede iniciar sesión. Si inicia sesión como root, no necesita sudo
realizar tareas privilegiadas.
Por otro lado, si inicia sesión con una cuenta de usuario y la utiliza sudo
sin contraseña, debe configurar el archivo sudoers sin tener que manipular /etc/ssh/sshd_config
. VerCómo hacer que Ubuntu recuerde para siempre la contraseña después de la primera vez