Contenido
¿Qué es SSH?
SSH o Secure Shell, es un protocolo de administración remota que le permite a los usuarios controlar y modificar sus servidores a través de Internet empleando un mecanismo de autentificación.
Con SSH podemos autenticar un usuario remoto, transferir entradas desde el cliente al host y retransmitir la salida de vuelta al cliente.
El servicio se creó como un reemplazo seguro para Telnet (ya que los datos no estaban cifrados) y utiliza técnicas criptográficas para garantizar que todas las comunicaciones hacia y desde el servidor remoto sucedan de manera encriptada.
¿Cómo instalar SSH?
SSH suele venir instalado de manera predeterminada en distribuciones como Kali Linux o Parrot. En caso de necesitar instalar SSH podemos utilizar el siguiente comando:
sudo apt install ssh
¿Cómo funciona SSH?
Si usas Linux o Mac, entonces usar el protocolo SSH es muy fácil. Si utilizas Windows, deberás utilizar un cliente SSH para abrir las conexiones. Para iniciar un servicio SSH en Linux, en primer lugar debemos de activar el servicio ssh en el equipo al cual nos vamos a conectar:
sudo systemctl start ssh
Luego ejecutamos el comando ssh, donde especificamos el Usuario y el Host separados por @.
ssh [Usuario]@[Host]
- SSH : Le indica a tu sistema que desea abrir una Conexión de Shell Segura y cifrada.
- Usuario : Representa la cuenta a la que deseas acceder. Podemos acceder como root si queremos tener máximos privilegios en el equipo cliente.
- Host : Hace referencia al equipo al que quieres acceder. Esto puede ser una dirección IP (10.10.10.10) o un nombre de dominio (www.ejemplo.com).
Una vez establecida la conexión nos pedirá la contraseña de la cuenta solicitada. La introducimos, pulsamos Enter y finalmente tendremos control del equipo.
También es posible conectarse a través de claves de acceso sin la necesidad de tener que introducir la contraseña cada vez que queramos acceder a dicha cuenta. Esto lo podremos configurar en el directorio .ssh que se encuentra dentro del directorio principal de cada usuario ~/.ssh.
Finalmente, si deseamos cerrar el servicio ssh por completo para que no quede expuesto utilizamos el siguiente comando:
sudo systemctl stop ssh
Puerto 22 SSH
La comunicación inalámbrica o por cable entre dos máquinas se realiza a través de puertos. Hay un total de 65,536 puertos de comunicación y la comunicación puede tener lugar a través de cualquiera de estos puertos. SSH se comunica por defecto a través del puerto 22. Cuando ejecutamos el comando anterior, la conexión entre el cliente local y el servidor se establece a través del puerto 22 y toda la comunicación se ejecuta a través de este puerto.Especificar puerto de conexión con SSH
En ocasiones, se puede modificar el puerto por el cual se conecta SSH
. En caso de no especificar ningún puerto, SSH se conectará por defecto por el puerto 22. En caso de querer especificar otro puerto lo podemos hacer con la opción -p
seguido del puerto en cuestión.
ssh [Usuario]@[Dirección] -p [Puerto]
Directorio .ssh:
La información de configuración de SSH específica del usuario se almacena en el directorio de inicio de cada usuario dentro de la ruta ~ /. ssh / o /home/user/.ssh. Aquí podremos guardar las claves públicas para validar un equipo y de este modo ahorrarse el introducir la contraseña cada vez que queramos ingresar .
- Claves_autorizadas: El archivo que contiene una lista de claves públicas “autorizadas”.
Si un usuario que se conecta puede demostrar que conoce la clave privada que corresponde a cualquiera de estos, entonces está autenticado.
Directorio /etc/ssh:
Este directorio cuenta con toda la configuración de SSH.
- sshd_config: Este es el archivo de configuración para todo el sistema del servidor sshd.
sshd_config:
Para activar cualquier configuración simplemente debemos desmarcar el comentario de dicha configuración, para ello simplemente borramos la almohadilla (#) del inicio y pasará a estar activa.Configuraciones más básicas:
- ListenAddres 0.0.0.0 : Para que puede escuchar a cualquier host.
- PermitRootLogin prohibit-password : Nos permitirá ingresar como super usuario o root.
- PasswordAuthentication yes : Activa la autenticación de contraseña SSH.
/etc/init.d/ssh restart
Para comprobar que todo funciona correctamente, podemos ver el estado del servicio sshd con:
/etc/init.d/ssh status
Cómo crear una Clave Pública y una Privada para conexiones SSH:
ssh-keygen
Clave Privada SSH –> id_rsa
Clave Pública –> id_rsa.pub
Conectarse a un servicio SSH con la clave Privada:
Hemos estado viendo que con la clave pública somos capaces de conectarnos a cualquier sistema. No obstante, también podemos conectarnos utilizando la clave privada, por eso es tan importante mantenerla segura, ya que cualquiera que disponga de esta clave tendría acceso al sistema. En este caso, si disponemos de una clave id_rsa, podemos configurarlo utilizar el comando «ssh-copy-id -i» seguido de la clave id_rsa para generar un archivo de identidad y poder conectarnos al sistema con el nombre el Usuario y el Host:
ssh-copy-id -i id_rsa usuario@host
Conectarse a un servicio SSH con SSHPASS:
La utilidad sshpass está diseñada para ejecutar SSH utilizando el modo de autenticación de contraseña interactiva con el teclado, pero de una manera no interactiva. De esta forma podemos especificar en la misma línea de comandos la contraseña antes de ejecutar el comando SSH. La contraseña debe establecerse entre comillas dobles:
sshpass -p ["Contraseña"] ssh [Usuario]@[Dirección] -p [Puerto]