Configuración del cliente
Preparar ~/.ssh/config
Configurar entradas de host para ssh
es 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 github
y github.com
por 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 ssh
claves
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 ssh
para acceder al usuario root en el sistema remoto. Se recomienda ssh
ingresar 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 ssh
como ese usuario, o el usuario raíz, la siguiente es la forma recomendada de colocar ssh
claves 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 sshd
y 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/skel
directorio. 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 sshd
archivo 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.