OpenSSH en windows
OpenSSH es una herramienta popular para la seguridad y la comunicación en red, en este post, hablaremos sobre cómo OpenSSH puede ayudar a los usuarios de Windows
OpenSSH es una herramienta popular para la seguridad y la comunicación en red. OpenSSH, que originalmente se creó para sistemas operativos basados en Unix, ahora está disponible también para Windows. Esto permite a los usuarios de Windows establecer conexiones seguras a través del protocolo SSH (Secure Shell).
En este post, hablaremos sobre cómo OpenSSH puede ayudar a los usuarios de Windows al permitirles conectarse y administrar sistemas remotos de forma segura a través de una interfaz de línea de comandos. Discutiremos los conceptos fundamentales de SSH, incluida la configuración de OpenSSH en Windows y algunos casos de uso reales que demuestran su utilidad.
Precondiciones
- SSH key: guía completa de las llaves públicas y privadas de SSH | CodigoElectronica
- Microsoft Windows [Versión 10.0.19045.3324]
Instalar OpenSSH en Windows
Para instalar los componentes de OpenSSH seguimos los siguientes pasos:
1. Ingresamos a configuración, seleccionamos aplicaciones y en la sección aplicaciones y caracteristicas damos click a caracteristicas opcionales.
Nota: si no encuentra las caracteristicas adicionales en la ruta anterior, intente buscarlas en la siguiente ruta: Configuración > Sistema > Características opcionales
2. Escanee la lista para ver si OpenSSH ya está instalado. Si no es así, en la parte superior de la página, seleccione agregar una caracteristica y, a continuación:
- Busque OpenSSH Client y, a continuación, seleccione Instalar
- Busque OpenSSH Server y, a continuación, seleccione Instalar
3. Una vez completada la configuración, vuelva a Aplicaciones y características y confirme que OpenSSH aparece en la lista.
4. Abra la aplicacion de servicios, para hacerlo tiene dos opciones principales:
- Seleccione inicio y escriba en el buscador servicios, y abra la aplicación.
- Con la combinacion de la tecla Windows + R, en la ventana de ejecutar escriba services.msc y luego de enter.
5. Buscaremos el servio OpenSSH SSH server como se muestra en la siguiente imagen, damos doble click:
6. Se abrirá la ventana de propiedades de OpenSSH server, la configuración que debemos hacer en esta ventana es la siguiente:
- En la pestaña general, buscamos el tipo de inicio y damos en Automático; liego damos en iniciar.
Conectarse al servidor OpenSSH
Una ves instalado OpenSSH server en Windows, procederemos a realizar una prueba, para ser mas prácticos nos conectaremos a la misma maquina, aun que se puede con dos maquinas diferentes.
El comando a usar para dicha conexion es la siguiente:
ssh domain\username@servername
Donde:
- Domain: dominio donde esta el servidor en la red local
- Username: nombre de usuario de la maquina, normalmente con el que iniciamos sesión
- Servename: nombre del servidor o la dirección IP
Veamos el ejemplo con datos reales
ssh codigoelectronica@192.168.10.11
Esto devolverá la siguiente salida cuando se conecta por primera vez:
The authenticity of host '192.168.10.11 (192.168.10.11)' can't be established.
ED25519 key fingerprint is SHA256:8SmCbc5YHuqOepbdc8SXpULrYORJMsB4zC5faYTrKjs.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Luego nos pedirá que coloquemos la contraseña del usuario.
Warning: Permanently added '192.168.10.11' (ED25519) to the list of known hosts.
oscardevops@192.168.10.11's password:
Una ves autenticados correctamente, veremos que muestra la consola de comandos de la maquina que iniciamos por SSH, que en este caso de prueba es la misma maquina.
Microsoft Windows [Versión 10.0.19045.3208]
(c) Microsoft Corporation. Todos los derechos reservados.
codigoelectronica@DESKTOP-1801MLQ C:\Users\codigoelectronica>
Configuración del servidor OpenSSH para Windows
En Windows, el cliente OpenSSH (ssh) lee los datos de configuración de un archivo de configuración en el Siguiente orden:
- Al iniciar ssh.exe con el parámetro -F, especificando una ruta a un archivo de configuración y un nombre de entrada de ese archivo.
- Un archivo de configuración de usuario en %userprofile%\.ssh\config.
- El archivo de configuración de todo el sistema en %programdata%\ssh\ssh_config.
En Windows, sshd lee los datos de configuración de %programdata%\ssh\sshd_config de forma predeterminada.
Procedemos a realizar la siguiente configuración Configurar OpenSSH server para producción | CodigoElectronica
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Procedemos a reiniciar el servicio de OpenSSH para que cargue los nuevos cambios del archivo de configuración.
Ingresamos de nuevo a servicios, buscamos OpenSSH server y dando boton derecho en el menú damos click en reiniciar.
Crear las llaves publicas y privadas
ssh-keygen
Procedemos a crear las llaves con el comando
ssh-keygen
Donde nos dará la siguiente respuesta
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/oscardevops/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/oscardevops/.ssh/id_rsa
Your public key has been saved in /c/Users/oscardevops/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:EbJbHepGCJyks59QGpZxDB8ef0CE/Ir1RUStaIrclrg oscardevops@DESKTOP-1801MLQ
The key's randomart image is:
+---[RSA 3072]----+
| o**==o+.. |
| B*= =.+.. |
| * +.+o*.. |
| . *. +*o. |
| .+* *..S |
| =o*... |
| oo |
| E |
| |
+----[SHA256]-----+
Si listamos los archivos en el directorio .ssh, observamos las llaves:
C:\Users\<USUARIO>\.ssh>dir
23/08/2023 12:36 p. m. <DIR> .
23/08/2023 12:36 p. m. <DIR> ..
23/08/2023 12:35 p. m. 2.622 id_rsa
23/08/2023 12:35 p. m. 587 id_rsa.pub
authorized_keys
En el servidor sshd, debemos crear el archivo `authorized_keys` con el valor de la clave publica `id_rsa.pub` y darle permisos adecuados para que solo el usuario de la sesion pueda acceder a este archivo:
Creamos el archivo authorized_keys, esto lo puede hacer por comandos o con blog de notas.
mkdir authorized_keys
Importante: el authorized_keys no debe tener ninguna extensión.
Copiamos el contenido de id_rsa.pub a authorized_keys
Deberá quedar la carpeta .ssh de la siguiente forma:
C:\Users\oscardevops\.ssh>dir
23/08/2023 12:36 p. m. <DIR> .
23/08/2023 12:36 p. m. <DIR> ..
23/08/2023 12:36 p. m. 588 authorized_keys
23/08/2023 12:35 p. m. 2.622 id_rsa
23/08/2023 12:35 p. m. 587 id_rsa.pub
Prueba con llave publica y privada
Volvemos a realizar las pruebas de conexión, usemos el mismo comando:
ssh oscardevops@192.168.10.3
Para este inicio por ssh, no va a solicitar la contraseña e ingresara directamente, esto sucede por que esta usando la key id_rsa que esta por defecto en el directorio c:/user/<USUARIO>/.ssh.
Si movemos de ubicación la key id_rsa o iniciamos sesión desde otra maquina, debemos parsarle como parametro la key al comando ssh, esto lo hacemos de la siguiente forma:
ssh oscardevops@192.168.10.3 -i c:/Users/USUARIO/.ssh/id_rsa
Donde (-i) es indentity_file
Conexion desde la maquina
ssh -i key.pem -R 3.238.182.00:2222:localhost:22 ubuntu@3.238.182.00