Son muchos los usuarios que echan de menos disponer de un cliente y un servidor SSH en Windows. Para solventar este inconveniente existen alternativas, pero la más sencilla y efectiva es la que detallaré a continuación.
Para poder seguir el tutorial necesitan disponer de una versión de Windows 10 igual o superior a la 1803. Esto es así porque a partir de la versión 1803, Windows 10 incorpora un cliente y un servidor OpenSSH.
VENTAJAS DE DISPONER DE UN CLIENTE Y UN SERVIDOR SSH EN WINDOWS
Las ventajas de disponer de un cliente y un servidor SSH en Windows son las que se detallan a continuación:
- Desde nuestro equipo con Windows podremos administrar remotamente equipos con Windows, Linux y MacOS sin necesidad de usar Putty.
- Podremos acceder y gestionar remotamente un equipo con Windows para por ejemplo realizar tareas de gestión y mantenimiento.
- Al disponer de un cliente y un servidor SSH podremos intercambiar archivos e información entre distintos sistemas operativos de forma segura. Por lo tanto, desde un sistema operativo Linux podremos conectarnos a un equipo con Windows y traspasar información de Linux a Windows o viceversa.
- Evitar el uso de un protocolo inseguro como es Samba. Con SSH podremos comunicarnos o traspasar información entre equipos de forma segura. Todo el tráfico que se origine entre cliente y servidor estará cifrado.
- Ejecutar aplicaciones gráficas de forma remota. De este modo desde Windows podemos ejecutar programas como por ejemplo un gestor de correo que está instalado en un sistema operativo Linux.
INSTALAR EL CLIENTE Y EL SERVIDOR SSH EN WINDOWS
Disponemos de varias formas para instalar un cliente y el servidor SSH en Windows. Lo podemos realizar usando Powershell o usando el entorno gráfico de Windows. En este artículo lo haremos usando el entorno gráfico.
Inicialmente presionamos la combinación de teclas Win + I para acceder a la configuración de Windows.
Cuando se abra el panel de configuración tenemos que presionar encima del icono de Aplicaciones.
A continuación, clican encima de la opción Administrar funciones opcionales.
Seguidamente verán la totalidad de características adicionales de Windows que tienen instaladas. En mi caso vemos que ya tengo instalada la opción cliente OpenSSH. Por lo tanto en mi caso tengo el cliente OpenSSH instalado de serie y no es necesario que realice absolutamente nada.
En caso que además quieran instalar un servidor SSH en Windows para que terceras personas puedan acceder a nuestro ordenador de forma remota tienen que clicar encima del icono Agregar una característica.
A continuación, buscan y clican sobre la opción Servidor OpenSSH. Cuando se desplieguen las opciones presionan sobre el botón Instalar. Acto seguido esperen unos segundos para que se realice la instalación del servidor SSH en Windows.
Una vez realizados los pasos indicados en este apartado reinicien el equipo.
CONFIGURAR EL SERVIDOR SSH PARA QUE ARRANQUE AL INICIAR WINDOWS
En estos momentos tanto el cliente como el servidor SSH en Windows están instalados. Para el que servidor SSH se active cada vez que iniciamos Windows tendremos que realizar lo siguiente.
Inicialmente presionamos la combinación de teclas Win + R. Cuando aparezca la ventana Ejecutar escriben services.msc y presionan el botón Aceptar.
A continuación localizaremos los servicios OpenSSH SSH Server y OpenSSH Authentication Agent. Una vez localizados los activaremos para que se inicien cada vez que arranquemos nuestro equipo.
Para ello seleccionamos el servicio OpenSHH SSH Server y presionamos el botón derecho del ratón. Cuando aparezca el menú contextual clicamos encima de la opción Propiedades.
Acto seguido en Tipo de inicio seleccionamos la opción Automático. A continuación presionamos en el botón Aplicar y para finalizar clicamos en Iniciar.
Finalmente repetiremos exactamente el mismo proceso para el servicio OpenSSH Authentication Agent. Por lo tanto seleccionaremos el servicio OpenSSH Authentication Agent. A continuación presionamos el botón derecho del ratón y cuando aparezca el menú contextual clicamos encima de la opción Propiedades.
Seguidamente en Tipo de inicio seleccionamos la opción Automático. A continuación presionamos en el botón Aplicar y para finalizar clicamos en Iniciar.
Una vez realizados los pasos indicados reinicien el equipo.
COMPROBAR QUE EL CLIENTE Y EL SERVIDOR SSH EN WINDOWS ESTÁN ACTIVOS
Una vez reiniciado el ordenador comprobaremos el servicio SSH está activo. Para ello abriremos un powershell como administrador.
Acto seguido ejecutaremos el siguiente comando en la Powershell:
Get-Service -Name *ssh*
En mi caso el resultado obtenido es el siguiente:
Status Name DisplayName |
Por lo tanto podemos estar seguros que nuestro cliente y servidor SSH en Windows están activos.
CONFIGURAR EL FIREWALL DE WINDOWS PARA ACCEDER A NUESTRO SERVIDOR SSH
Para tener acceso a nuestro equipo a través de SSH tenemos que configurar el Firewall de Windows. Para ello abrimos una powershell como administrador y ejecutamos el siguiente comando:
netsh advfirewall firewall add rule name="SSHD Port" dir=in action=allow protocol=TCP localport=22
De este modo abriremos el puerto 22 para que nos podamos conectar vía SSH a nuestro equipo con Windows 10.
COMPROBAR QUE EL SERVICIO SSH ESTÁ ESCUCHANDO EN EL PUERTO 22
Para comprobar que el servidor SSH en Windows está activo y escuchando en el puerto 22 abrimos un powershell como administrador y ejecutamos el siguiente comando:
netstat -bano | more
Sí después de ejecutar el comando obtenéis un resultado parecido al siguiente quiere decir que el servidor SSH está escuchando en el puerto 22.
Proto Dirección local Dirección remota Estado PID |
Una vez comprobado que el servidor SSH está activo y escuchando en el puerto 22 podemos pasar al siguiente apartado.
CONECTARSE REMOTAMENTE A UN EQUIPO WINDOWS DESDE LINUX
Si desde un equipo con Linux nos queremos conectar a uno equipo con Windows vía SSH tenemos que realizar los siguientes pasos.
Inicialmente tenemos que asegurar que en Linux tenemos instalado el paquete openssh-client. Para ello en la terminal de Linux ejecutamos el siguiente comando:
sudo apt-get install openssh-client
Ahora imaginemos que queremos conectarnos de forma remota al ordenador en que hemos instalado el servidor SSH. El ordenador al que nos queremos conectar dispone de la siguiente configuración:
- El servidor SSH está activo y escuchando en el puerto 22.
- El nombre de usuario del equipo con Windows al que nos queremos conectar de forma remota es jccal.
- La IP del ordenador al que hemos instalado el servidor SSH es la 192.168.1.55.
Una vez conocidos los datos necesarios para la conexión abrimos una terminal de Linux y ejecutamos el siguiente comando:
ssh -p 22 jccal@192.168.1.55
Nota: Las partes coloreadas del comando del comando son las que se tienen que adaptar en función de la configuración del servidor SSH.
Una vez ejecutado el comando se nos preguntará la contraseña del usuario jccal. Introducimos la contraseña que usa el usuario jccal para loguearse a Windows y presionamos Enter. Acto seguido, tal y como se puede ver en la captura de pantalla, podrán acceder remotamente al equipo con Windows.
Si lo prefieren pueden acceder remotamente a Windows de forma gráfica. Para ello en un sistema operativo Linux presionan la combinación de teclas Ctrl+L.
Seguidamente en la barra de direcciones escriben el siguiente comando y presionan Enter.
ssh://jccal@192.168.1.55:22
Nota: Las partes coloreadas del comando del comando son las que se tienen que adaptar en función de la configuración del servidor SSH.
Acto seguido se nos preguntará la contraseña de la sesión de usuario jccal. La introducimos y presionamos sobre el botón Conectar.
Si hemos realizado los pasos de forma correcta nos conectaremos de forma remota al equipo que tiene instalado Windows.
CONECTARSE A UN SERVIDOR SSH DESDE WINDOWS CON POWERSHELL
Son muchos usuarios de Windows 10 que cuando quieren conectarse vía SSH a un equipo remoto usan Putty. Es una buena opción, pero si hemos seguido las instrucciones de este artículo ya no es necesario usar Putty.
Supongamos que queremos conectarnos remotamente a una Raspberry Pi y disponemos de la siguiente información:
- El usuario de la Raspberry Pi al que nos queremos conectar es pi.
- La IP de la Raspberry Pi es la 192.168.1.100
- El servicio SSH de la Raspberry Pi está escuchando en el puerto 22.
Una vez conocidos estos datos abrimos una powershell y ejecutamos el siguiente comando:
ssh -p 22 pi@192.168.1.100
Nota: Las partes coloreadas del comando se deberán adaptar en función de los parámetros del equipo remoto al que nos queremos conectar.
Después de ejecutar el comando, tal y como se puede ver en la captura de pantalla, se establecerá la conexión remota a mi Raspberry Pi.
MODIFICACIÓN DE LA CONFIGURACIÓN ESTÁNDAR DE SSH EN WINDOWS
La totalidad de claves, logs y configuración del servidor SSH se hallan en la siguiente ubicación:
C:\ProgramData\ssh
Para modificar la configuración estándar de SSH en Windows tan solo tienen que editar el fichero sshd_config con el blog de notas.
Una vez dentro del fichero sshd_config tan solo tienen que ir descomentando las líneas y definir los parámetros que se quieren modificar. A modo de ejemplo podemos descomentar la línea # port 22 y modificarla por port 2222.
Finalmente guardamos los cambios, cerramos el fichero y reiniciamos el servidor SSH. Una vez finalizado el proceso el servidor SSH estará escuchando en el puerto 2222 en vez del puerto 22.
Ahora el servidor SSH está escuchando en el puerto 2222. Por lo tanto deberemos configurar el firewall de Windows para que permita el tráfico de entrada en el puerto 2222. Para ello abrimos una powershell como administrador y ejecutamos el siguiente comando:
netsh advfirewall firewall add rule name="SSHD Port" dir=in action=allow protocol=TCP localport=2222
Acto seguido podemos borrar la regla del firewall que permitía el tráfico en el puerto 22. Para ello ejecutamos el siguiente comando en la powershell:
netsh advfirewall firewall delete rule name="SSHD Port"
A partir de estos momentos para conectarnos al servidor SSH deberemos cambiar los comandos anteriores por los siguientes:
ssh -p 2222 jccal@192.168.1.55ssh://jccal@192.168.1.55:2222ssh -p 2222 pi@192.168.1.100
Otras modificaciones de la configuración que se pueden establecer en el archivo de configuración de SSH son las siguientes:
- El tipo de cifrado que se aplicará en la conexión.
- Definir si permitimos que un usuario se pueda loguear con permisos de administrador.
- El número de logins simultáneos desde una IP concreta.
- Etc.
Ver los comentarios (27)
El ejemplo que has puesto es en una red local, pero si quiero conectarme a un pc remoto en otra red? tendría que poner la IP pública del ordenador al cual conectarme? o la wan del router? ¿o cómo sería?
Gracias.
Hola Carlos
Tienes que cambiar la IP local por la IP Pública. En el router deberás abrir el puerto correspondiente y redireccionar las peticiones entrantes a tu servidor SSH (Port forwarding). También deberás configurar tu firewall para que permita las conexiones.
Saludos
Estimad@,
Desde ya muchas gracias por esta guía..
Cuando intento conectarme desde windows por powershell utilizando el comando
"ssh -p 2222 pi@192.168.1.100"
(adaptado a mi ip y usuario) me arroja:"ssh_exchange_identification: read: Connection reset"
¿Sabe como puedo solucionar esto?
Además me gustaría configurarlo para que de acceso a una sola carpeta en el computador/servidor (tipo sftp) ¿Podría ayudarme con esto?
Saludos
Hola
Para acceder a una sola carpeta puedes seguir las siguientes indicaciones.
https://geekland.eu/crear-servidor-sftp-enjaulado/
Referente al error tendrás que mirar que la IP no esté baneada en /etc/hosts.deny, o que estén los puertos abiertos, que el firewall esté bien configurado o que algún software como fail2ban no esté bloqueando tu ip.
Saludos
Como puedo configurar que el home de un sftp en un servidor windows apunte hacia un path concreto? No consigo que funcione con lo que he encontrado, la configuración actual es esta (he comentado algunas lineas, tras probar que no funciona tampoco sin comentar)
Subsystem sftp sftp-server.exe -d d:\repositorio\pdf\pdfweb
#Match User sftp_user
#ChrootDirectory D/Repositorio/PDF/PDFWEB
#PermitTunnel no
#AllowAgentForwarding no
#AllowTcpForwarding no
#X11Forwarding no
#ForceCommand internal-sftp
Lo que comentas lo he realizado en Linux. En Linux indicado el path concreto con este comando:
ChrootDirectory /home/sftpserver
Si quieres ver como se hace en Linux tienes este enlace.
En Windows se debería realizar de forma similar.
Saludos
AllowGroups es el unico que me ha funcionado
Hola, muchas gracias por la guia, es de gran utilidad.
Me gustaría conocer los pasos para que otro usuario se conecte con permisos de administrador. Después de un rato intentándolo ha sido imposible.
Mi intención es conectarme al servidor con un usuario que no sea administrador y por ejemplo levantar la calculadora.
Si me logo con el usuario administrador puedo hacerlo sin problema pero si lo hago con otro no es posible.
Muchas gracias
Hola gracias por el post podria ayudarme en lo siguiente. Realizo paso a paso todo lo indicado y va perfectamente hasta:
ejemplo@1.1.1.1's password:
Nunca puse clave alguna a nada por que pide el pas?
¿A que password se refiere?
gracias
Hola
Tienes que poner el usuario de windows y la clave del usuario de windows al que te quieres conectar remotamente. Si te quieres conectar a tu usuario entonces tienes el password que usas al abrir tu ordenador. Creo que este punto lo detallo en el post.
Saludos
La computadora a la que quiero acceder no tiene password y nada
Hola. No te se responder. Pero lo que haría es poner tu usuario y dejar la contraseña en blanco. Ya dirás si te funciona.
Saludos
Muy util, me ha servido perfecto, una pregunta, como puedo obtener acceso a todas las unidades compartidas en el pc en el que he configurado el servidor? siguiendo todos los pasos solo consigo acceso a la unidad c: pero tengo otras 3 unidades compartidas en red. Muchas gracias
Hola
Cuando estás conectado a tu ordenador vía SSH es como si estuvieras conectado a tu propio ordenador. Por lo tanto tienes que introducir los comandos que habitualmente introducirías a la terminal para conectarte a otros discos duros o unidades de red. Por ejemplo si tienes un disco duro en el d: tan solo tendrías que ejecutar el comando d:
O si te quisieras conectar a un Nextcloud via Webdav net use Z: \\ejemplo.com@ssl\nextcloud\remote.php\dav /usuario:password
etc
Hola! Por fin un artículo que me ayudó enorme. Solo tengo una duda, para el servidor que quiero acceder solo me enviaron el dominio y mi usuario sin contraseña, en este caso ¿cómo podría acceder a la máquina remota? Muchas gracias de antemano
Hola
Esto depende de la configuración del servidor SSH. Si el servidor está configurado para que te tengas que autenticar con contraseña o certificado entonces no te podrás conectar.
Intenta conectarte como lo harías de forma habitual y ya verás si te puedes conectar o no.. o si te pide contraseña, etc.
Saludos
Hola,
Antes de nada, muchas gracias por tus entradas y por este Blog. He aprendido unas cuantas cosas.
Solo una cuestión:
En tus indicaciones de esta entrada, si cambias en el Firewall la regla para el puerto de escucha del servicio ssh, y luego ejecutas el comando para eliminar la regla anterior, se eliminan las 2 reglas:
netsh advfirewall firewall delete rule name="SSHD Port"
Se eliminaron 2 reglas.
¿No debería de eliminarse primero la regla "SSHD Port" y luego añadir la nueva con el puerto ssh actualizado? La lógica me dicta que si, pero a lo mejor me he dejado algo...
Hola,
No se pueden crear 2 reglas con el mismo nombre. Por lo tanto, cuando ejecutes el comando para abrir el puerto 2222 se sobrescribirá la regla. Por lo tanto solo borrarás una.
Si lo prefieres puedes borrar la existente y crear otra nueva.
Saludos
Hola como están chicos perdonen mi ignorancia, no se como se obtiene la IP del ordenador i tampoco crear el usuario ssh para poder ingresar a conectar muchas gracias
Hola,
Para obtener la ip de tu equipo abres una línea de comandos y ejecutas el comando
ipconfig
. En el apartado Dirección IPv4 hallarás la IP de tu equipo.Para obtener el nombre de usuario activo lo puedes hacer con el comando
wmic computersystem get username
.Consultando en google podrás hallar estas respuestas.
En servicios al iniciar el OpenSSH SSH Server me aparece la siguiente ventana "Windows no pudo iniciar el servicio OpenSSH SSH en equipo locas. Error 1067: El proceso se ha terminado de forma inesperada." sabras como solucionar esto ?
Hola
Si buscas en Google encontrarás información sobre el problema que tienes. En este link encontrarás una solución.
Hola, muchas gracias por tu articulo, me podrías decir la forma para poder conectarme sin password desde un cliente linux, lo he intentado copiando la clave publica pero no me funciona?
Desde ya muchas gracias.
Hola
En su día escribí este tutorial.
https://geekland.eu/conectarse-servidor-ssh-sin-contrasena/
Es de Linux a Linux, pero con los pasos equivalentes debería funcionar.
Saludos
Muchas gracias por éste artículo.
Te propongo hacer uno sobre samba/windows-linux
Hola Gracias
Tomo noto y es un tema que tarde o temprano tocaré.
Saludos
Buenas tardes, podría ayudar de una conexión ssh de linux a windows pero guardando la conexión? para no estar colocando el password utilizando llaves privadas?