# Manual para conexión SSH con Putty
La conexión mediante llaves ssh es una de las formas más eficaces de conectarse a servidores con SSH, permitiéndonos incluso la creación de conexiones desatendidas que no requieren la interacción del usuario. Es un sistema basado en un par de llaves, la llave pública y la llave privada
La seguridad esta garantizada en tanto y cuanto nuestra llave privada no sea violada. En caso de dudas de una intrusión con capacidad de lectura de nuestro sistema, deberemos anular el par de llaves.
# Putty
# Instalación
Descargar PuTTy e instala PuTTY en tu ordenador Windows. Es una operación sencilla.
# Llaves
PuTTy instala de forma un programa adicional llamado PuTTYGen, que es un generador de llaves que nos facilitará la generación de nuestro par de llaves compatibles con OpenSSH.
Recuerda que en Windows tienes un buscador 🔍 que te permite localizar las aplicaciones instaladas
- Click en el botón Generate
- Mover durante un tiempo en la casilla superior donde aparece el mensaje en inglés que nos solicita realizar esta acción.
- Copiar y pegar el contenido de la casilla que ha aparecido bajo la linea que indica Public key for pasting into OpenSSH authorized_keys file y guardarlo en un fichero de texto ASCCI (Notepad)
- Click en el botón Save public key (aconsejado usaer el nombre con la extensión .pub)
- Click en el botón Save private key (aconsejado el mismo nombre sin poner extensión ya que PuttyGen se encargará de añadirle la extensión)
Es aconsejable que guardes tus llaves en una carpeta, que hallas creado previamente o que si abacas de crear, este en tu directorio personal (no público) y configurada para esta oculta
Las llaves en formato propietario que has guardado en los dos último pasos no sirven para poner en el servidor salvo que las adaptes. Para el servidor *nix necesitas la del paso 3
Para mi es habitual y seguro el uso de una llave de 2048 bits, que guardo cuidadosamente en un directorio de mis dispositivos que esta oculto y con permisos de sólo lectura para el propietario. Como ademas uso esa llave para muchas operaciones basadas en scripts
# Llaves formato OpenSSH
Algunos programas como TablePlus no permiten el uso de las llaves con formato PuTTY, asi que debemos salvar la llave privada con formato OpenSSH.
Esto creará en la carpeta elegida un fichero de textos ASCII, con la llave privada en formato OpenSSH, que podremos usar con programas como TablePlus
# Instalar las llaves en el servidor
Las llaves deben ser instalada en el servidor al que queremos acceder via SSH, con las siguientes condiciones:
- El servidor SSH debe aceptar como método de autentificación el uso de llaves que como norma general esta permitido.
- El path habitual en las distribuciones mas comunes para la ubicación de las llaves es
/user_path/.ssh/
- El nombre del fichero es authorized_keys
# /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys
- El usuario root puede tener configurado el acceso si el administrador lo permite. Puede acceder con llave pero no con password aunque el servidor permita el uso de contraseña
# /etc/ssh/sshd_config
PermitRootLogin prohibit-password
Existen muchas posibilidades de configuración con el método de autentificación basado en llaves, como por ejemplo limitar el uso de ssh a determinado comandos
Con esta información deberemos copiar el contenido de nuestra llave pública en ese fichero.
Si no disponemos de acceso inicial ya que no somos root o por cualquier otra circunstancia, deberemos facilitar la llave pública al administrador del sistema.
# Ejemplo para autorizar la llave en shell
Valido si copiamos y pegamos la llave
echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzsMe4RJWv0hQZSklajdjkwjwj...........+ykkKwVh1M4ZJ8nm+MUsJ9OFh9r6kZ5NgrLvnbMZRCBviBTOf5DuZTiKWm6wg/h4hHO1rmnDQ== miuser@misistema' >> ~/.ssh/authorized_keys
Valido si lo que usamos es el fichero de la llave público creado con PuTTYGen cuyo formato no es valido para añadir al fichero de autorizaciones
abkrim@hq:~$ echo '---- BEGIN SSH2 PUBLIC KEY ----
> Comment: "rsa-key-20200403"
> AAAAB3NzaC1yc2EAAAABJQAAAQEAnwC56GlG/4lRkknIKVL9EWoD0jI6nyB2VBXa
> smu9+znUYIlDpcD2MvlnYMQAqswqLwajgxSQIgmDbt0v2jEQXq7WupLf2LwlM9nl
> 4Q0DUTH9sxtK8D69d/Ewb5X+iWSNtUnPSoOdI83L3fkzDEIVSbN8Mas5N3YLiV3n
> +lMSh8TPfbl0hKqVoU/Kn9oivYRDDbV7ZKY2rVohdwdrktbGMGIz3nz+STYodz/8
> ajvf9Qebx0L0M5Kq9YnGfdBnzwFARNoaZQmBIPJ9qDDWOcbuV0keXCNe5BbhLgxZ
> holEdx8inoNrpQA775MmxgBKaB8xayl59XiVaMp1Vvv2A+R27Q==
> ---- END SSH2 PUBLIC KEY ----' >> mi_key.pub
abkrim@hq:~$ ssh-keygen -i -f mi_key.pub > openssh_my_key.pub
abkrim@hq:~$ cat openssh_my_key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAnwC56GlG/4lRkknIKVL9EWoD0jI6nyB2VBXasmu9+znUYIlDpcD2MvlnYMQAqswqLwajgxSQIgmDbt0v2jEQXq7WupLf2LwlM9nl4Q0DUTH9sxtK8D69d/Ewb5X+iWSNtUnPSoOdI83L3fkzDEIVSbN8Mas5N3YLiV3n+lMSh8TPfbl0hKqVoU/Kn9oivYRDDbV7ZKY2rVohdwdrktbGMGIz3nz+STYodz/8ajvf9Qebx0L0M5Kq9YnGfdBnzwFARNoaZQmBIPJ9qDDWOcbuV0keXCNe5BbhLgxZholEdx8inoNrpQA775MmxgBKaB8xayl59XiVaMp1Vvv2A+R27Q==
abkrim@hq:~$ cat openssh_my_key.pub >> .ssh/authorized_keys
Para cPanel recomiendo el uso de la herramienta de cPanel que nos permite importar la clave publica y autorizarla (mejor si usamos la clave publica que nos aparece en el generador que convertir usando la que hemos guardado).
# Configuración de una conexión remota
En un PuTTy por defecto sólo deberemos configurar lo siguiente, (como norma general ya que puede ser que debemos consultar con el administrador del sistema)
# Session
- Host Name (or Ip address)
- Port -> Es obligatorio si el puerto no es el puerto por defecto "22"
- Connection type: -> SSH
# Connection > Data
- Auto-login username -> Nombre del usuario con el que queremos acceder y en el que autorizamos nuestra llave
# Connection > SSH > Auth
- Private key file for authentication -> Importante elegir la llave private correcta, es decir la correspondiente a la llave publica que hemos autorizado
# Conexión
Antes de intentar conectarnos es importante salvar nuestra conexión para evitar tener que repetir el proceso. (Opción en la categoría Session)
- Hacemos click en el botón open
- Y feliz trabajo en nuestra sesión de terminal