Configuración del cliente
Preparar ~/.ssh/config
Configurar entradas de host para sshes realmente fácil y le ahorrará muchos problemas. Aquí hay un ejemplo:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
En este ejemplo, configuramos digitaloceanbox y githuby github.compor lo que podemos hacer los siguientes comandos:
ssh github
ssh digitaloceanbox
Si queremos iniciar sesión como un usuario diferente al especificado en el archivo de configuración, simplemente ponemos user@al principio:
Generando sshclaves
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Tenga en cuenta que he especificado la ruta completa de la clave privada que quiero generar cuando se lo solicite ssh-keygen. También he definido el comentario ( -C) que me permite identificar fácilmente las claves en máquinas remotas.
Esto creará dos archivos:
.ssh/digitalocean-rsa
- Clave privada . Nunca compartas esto .
.ssh/digitalocean-rsa.pub
- Llave pública. Esto es lo que almacena en el servidor para autenticar.
Cuando proporcionas tu ssh clave, asegúrese de que sea.pub versión! Cuando agregue a su ~/.ssh/config, asegúrese de agregar la clave privada correcta que coincida con la clave pública que agregó al sistema.
Configuración del servidor
La mayoría de las instalaciones vendrán con la autenticación de clave pública habilitada. Sin embargo, si comienzas a hacer las cosas de todas maneras, es posible que tengas algunos problemas. En donde el OP está en su problema, recomiendo que el OP elimine el/root/.ssh/ directorio para comenzar de nuevo.
No se recomienda que utilice sshpara acceder al usuario root en el sistema remoto. Se recomienda sshingresar a otro usuario y luego escalar a raíz utilizando su contraseña (sudo su - ).
Agregar claves al host usando ssh-copy-id
Independientemente de si decide crear otro usuario y utilizarlo sshcomo ese usuario, o el usuario raíz, la siguiente es la forma recomendada de colocar sshclaves en un servidor:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Esto permite sshd crear el directorio y los archivos necesarios con los permisos necesarios. Esto significa que no hay ninguna posibilidad de que arruines los permisos o necesites recordar los detalles. Simplemente use la herramienta para cargar las claves.
Deshabilitar autenticación de contraseña
Dicho esto, una vez que haya ingresado la clave y haya verificado que puede conectarse utilizando las claves, se recomienda deshabilitar la autenticación de contraseña sshdy reiniciar el servicio:
- Editar
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
¿Qué pasa con los nuevos usuarios?
Si deshabilita la autenticación de contraseña, ¿cómo puede introducir nuevos usuarios? Una forma es agregar archivos de plantilla al /etc/skeldirectorio. Una vez que haya ingresado a un usuario, haga lo siguiente:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Edite todos los archivos encontrados
/etc/skel/.ssh/para que queden en blanco, a menos que desee teclear automáticamente para cada usuario recién creado.
Cuando cree nuevos usuarios con sudo useradd -m newuser, ese usuario tendrá el.ssh/authorized_keys , que puede editar y tendrá los permisos adecuados.
Depuración
Puede ver el sshdarchivo de registro para ver por qué las conexiones fallan o se rechazan:
sudo tail -f /var/log/auth.log
Mientras ejecuta este comando, use otra terminal para intentar iniciar sesión. Muchas veces los mensajes proporcionados son lo suficientemente buenos como para ayudar a detectar el problema o encontrar una solución en línea.