SSH o secure shell es una de las herramientas más esenciales para cualquiera que trabaje con servidores remotos, especialmente si está gestionando su propia infraestructura o desplegando aplicaciones. ¿Qué es exactamente SSH? ssh es un protocolo para conectarse a un ordenador remoto de forma segura. esta conexión se establece a través de un canal encriptado, lo que significa que todos los datos enviados entre su máquina y el servidor remoto están protegidos contra escuchas o interceptación. SSH se utiliza principalmente en línea de comandos y a menudo lo utilizan los administradores para las transferencias de archivos y el mantenimiento de aplicaciones. Los componentes principales son el cliente y el servidor. Cuando se inicia una conexión SSH desde una máquina local esa máquina es el cliente, mientras que la máquina remota es el servidor, ahora para autenticarse en SSH hay dos métodos principales, autenticación por contraseña donde se ingresa usuario y contraseña y autenticación por clave pública y clave privada.
En la siguiente imagen hacemos una conexión sencilla con el usuario q3it y la IP 192.168.1.107.
Una vez dentro ya podemos gestionar el sistema. Empecemos por transferir archivos de la máquina local a la máquina remota, y para eso tenemos que utilizar el comando scp "Secure Copy Protocol" de la siguiente manera. scp "fichero local" usuario@IP:/"Ruta destino".
Si lo que queremos es enviar un fichero al servidor invertiremos el proceso. Imaginemos que deseamos enviar el archivo Parte5-web.pdf que se encuentra en la máquina local, para eso ejecutamos la siguiente instrucción...
scp Parte5-web.pdf q3it@192.168.1.107:/home/q3it/Parte5-web.pdf
Ahora vamos a probar una conexión desde mi iMAC a una máquina Windows. Lo primero que vamos a hacer es habilitar el servicio SSH en windows, normalmente solo existe el cliente SSH.
Para instalar el SSH-Server ejecutamos las siguientes instrucciones como administrador en PowerShell.
#Instalando la caracteristica OpenSSH.Server |
#Confirmando que se haya instalado correctamente |
#Verificando el servicio ssh |
#Habilitando el servicio para que se inicie junto al sistema |
#Iniciando servicio |
Ahora vamos a la consola de servicios del sistema y comprobamos que si está habilitado y corriendo.
Lo primero que tenemos que hacer es consultar la IP pública y privada del servidor remoto y verificar si hay conexión con la máquina local.
Como vemos en la imagen anterior no tenemos conexión con la máquina local cuya IP es 192.168.42.240.
Para solucionar esto y podernos conectar desde cualquier parte mundo, necesitamos abrir un puerto en el Router del servidor remoto para que este haga NAT en la comunicación. Para este caso necesitamos abrir el puerto 22 y le especificamos la dirección IP de la máquina que va a comenzar la comunicación.
Ahora comprobamos la conexión al servidor remoto.
Con esto solo hemos solucionado la conexión desde la máquina local al servidor remoto. Ahora ¿Que pasa si nos queremos conectar desde el servidor remoto a la máquina local? que seguimos sin conexión.
Hay un truco muy chulo para solucionar este problema es crear un túnel de comunicaciones. Nosotros le enviamos un puerto a través de la comunicación desde la máquina local al servidor remoto y dicho puerto se abre en la máquina local.