Una vez, estabas limitado en el tipo de computadoras a las que podías conectarte con Windows PowerShell mediante PowerShell Remoting. Dado que PowerShell Remoting solo admitía el proveedor WsMan, tus posibilidades de conectarte a computadoras que ejecutan Linux, por ejemplo, eran nulas. Sin embargo, en 2015, Microsoft introdujo el soporte para SSH en Windows, brindando un gran potencial y finalmente permitiéndote usar SSH y PowerShell juntos.
En este artículo, vamos a sumergirnos y ver cómo configurar el cliente SSH de Windows y cómo puedes aprovechar SSH y PowerShell Remoting.
Esta publicación sobre SSH y PowerShell es parte de la serie de blogs #PS7Now. Asegúrate de revisar a todos los demás colaboradores en esta serie al final de esta publicación.
Antes de comenzar
Este artículo será un tutorial paso a paso. Si tienes la intención de seguirlo, asegúrate de cumplir con los siguientes requisitos previos:
- Windows 10: Todos los ejemplos se realizarán en Windows 10 Build 1903. El ejemplo estará en el mismo dominio que el servidor remoto de Windows.
- PowerShell v6+ instalado en Windows 10: Todos los ejemplos utilizarán PowerShell 7 RC2.
- A remote SSH server – All examples will use a Windows Server SSH machine. If you’re connecting to a Linux machine, you can skip the server setup steps.
- Puerto TCP 22 disponible en el servidor remoto
Configuración del Cliente SSH (Windows 10)
Antes de abrir una consola de PowerShell, primero deberá realizar algunas tareas únicas para hacer que SSH y PowerShell funcionen juntos y asegurarse de que Windows 10 pueda conectarse a un servidor SSH remoto.
Añadir la carpeta OpenSSH al variable de entorno PATH
OpenSSH viene preinstalado en Windows 10, pero a veces necesita un poco de ayuda para trabajar con Remoting de PowerShell. Si ya ha intentado usar Enter-PSSession
, por ejemplo, para conectarse a un sistema SSH remoto y se encontró con el error a continuación, debe asegurarse de que la ruta al ejecutable de OpenSSH (ssh.exe) en el variable de entorno PATH.
Para agregar la ruta de la carpeta OpenSSH a la variable de entorno PATH, haz clic en el botón Inicio y busca configuración avanzada del sistema, luego haz clic en Ver configuración avanzada del sistema como se muestra a continuación.

Cuando aparezca la ventana Propiedades del sistema, haz clic en el botón Variables de entorno.

En la ventana Variables de entorno, bajo Variables del sistema, selecciona Path y haz clic en Editar.

En la ventana Editar variable de entorno, haz clic en Nuevo y luego ingresa la ruta donde se encuentra el ejecutable ssh.exe. Para este tutorial, la ruta es C:\Program Files\OpenSSH, como se muestra a continuación. Una vez ingresado, haz clic en Aceptar dos veces para guardar el nuevo valor.

Especificar el Subsistema SSH
Ahora deberás especificar el subsistema SSH para que PowerShell lo llame al conectar a través de SSH en el servidor remoto de Windows. Si no le dices a PowerShell qué subsistema usar, inevitablemente obtendrás el siguiente error:
Enter-PSSession: El proceso en segundo plano informó un error con el siguiente mensaje: La sesión del cliente SSH ha finalizado con el mensaje de error: solicitud de subsistema fallida en el canal 0.
Ten en cuenta que si no te estás conectando a una máquina con Windows Server, no será necesario realizar estos pasos.
En el servidor remoto de Windows, abre el archivo C:\ProgramData\ssh\ssh_config. Desplázate hacia abajo hasta la sección override default of no subsystems del archivo ssh_config. La sección se verá como en la captura de pantalla a continuación.

Debajo de la línea existente de Subsystem, agrega el subsistema PowerShell usando la línea siguiente:
Ahora guarda el archivo ssh_config y reinicia el servicio de Windows sshd en el servidor remoto de Windows como se muestra a continuación.
Una vez que el servicio se reinicie, ahora deberías poder conectarte a través de SSH y PowerShell.
Conexión mediante PowerShell y SSH
Ahora que la configuración está completa, es hora de probar el Remoting de PowerShell.
Primero, intenta ingresar a una sesión interactiva usando el cmdlet Enter-PSSession
. A diferencia de lo que podrías estar acostumbrado, no utilizarás el parámetro ComputerName
. En su lugar, utilizarás el parámetro HostName
para especificar el equipo remoto.
Por defecto, el Remoting de PowerShell todavía utiliza WsMan. Para anular el valor predeterminado, utiliza el parámetro SSHTransport
para indicar que te gustaría conectarte a través de SSH y PowerShell.
Cuando intentes conectarte por primera vez con un nombre de usuario y contraseña, deberás crear una clave privada SSH. Para hacerlo, se te pedirá como se muestra a continuación. Cuando se te solicite, escribe ‘y’ para aceptar.

Luego se te pedirá la contraseña del usuario con el que iniciaste sesión actualmente.
Tenga en cuenta que en este ejemplo, el cliente de Windows 10 y el servidor SSH de Windows Server están en el mismo dominio de Active Directory. De forma predeterminada, el Remoting de PowerShell intentará autenticarse con el usuario que ha iniciado sesión. También puede usar el parámetro
Credential
para especificar un nombre de usuario y una contraseña diferentes.
Después de proporcionar la contraseña, debería encontrarse en un prompt familiar de Remoting de PowerShell.

Ahora salga de la sesión con exit
y luego pruebe con New-PSSession
. Observe que a continuación, utilizando los mismos parámetros HostName
y SSHTransport
como antes, el Transport
ahora aparece como SSH
.
Todavía es posible utilizar WsMan como protocolo de transporte también usando el parámetro ComputerName
sin necesidad de utilizar el parámetro SSHTransport
.
No es necesario usar un nombre de usuario y una contraseña para SSH. En su lugar, podría usar un archivo de clave privada y utilizar el parámetro
KeyFilePath
para proporcionar la ubicación.

¡No olvide limpiar sus sesiones abiertas con Get-PSSession | Remove-PSSession
!
Resumen
Ahora debería saber cómo configurar tanto Windows 10 como Windows Server para usar SSH con Remoting de PowerShell. Una vez configurado, la única diferencia entre utilizar WsMan como protocolo de transporte y SSH son un par de parámetros.
Si deseas aprender más sobre PowerShell y SSH, asegúrate de consultar el artículo de documentación de Microsoft sobre Remoting de PowerShell sobre SSH.
#ContribuyentesPS7Ahora
Esta publicación formó parte de una serie sobre PowerShell 7 realizada por los excelentes colaboradores que ves a continuación. ¡Asegúrate de consultar sus publicaciones y ver qué están haciendo en sus blogs!
Author | Blog | |
---|---|---|
Josh King | @WindosNZ | https://toastit.dev/ |
Adam Bertram | @adbertram | https://adamtheautomator.com/ |
Jonathan Medd | @jonathanmedd | |
Thomas Lee | @doctordns | https://tfl09.blogspot.com/ |
Prateek Singh | @singhprateik | https://ridicurious.com |
Dave Carroll | @thedavecarroll | https://powershell.anovelidea.org/ |
Dan Franciscus | @dan_franciscus | https://winsysblog.com/ |
Jeff Hicks | @jeffhicks | https://jdhitsolutions.com |
Josh Duffney | @joshduffney | http://duffney.io/ |
Mike Kanakos | @MikeKanakos | https://www.networkadm.in/ |
Tommy Maynard | @thetommymaynard | https://tommymaynard.com// |