Configuración de PowerShell SSH Remoting en PowerShell 6

Con la versión 6 de PowerShell, Microsoft introdujo PowerShell Remoting sobre SSH, que permite una verdadera multiplataforma PowerShell remoting entre Linux, macOS y Windows. PowerShell SSH Remoting crea un proceso anfitrión de PowerShell en la máquina de destino como un subsistema SSH. Normalmente, PowerShell remoting utiliza WinRM para la negociación de la conexión y el transporte de datos, sin embargo WinRM sólo está disponible en máquinas basadas en Windows.

También hay algunas desventajas. El remoting basado en SSH no soporta actualmente la configuración de puntos finales remotos y JEA (Just Enough Administration). También es importante entender, que esto no es sólo otro cliente SSH de PowerShell.

Utilizar el transporte SSH con PowerShell Remoting

Para utilizar PowerShell remoting con SSH puede utilizar los mismos cmdlets, que conoce de PowerShell remoting con WinRM.

  • New-PSSession
  • Enter-PSSession
  • Invoke-Command

Hay 3 nuevos parámetros para estos cmdlets, si estás usando PowerShell SSH remoting.

  • HostName (En lugar de -Computername, se define el objetivo SSH)
  • -UserName (En lugar de -Credentials se utiliza el parámetro -UserName)
  • -KeyFilePath (Si se utiliza la autenticación de claves SSH se puede utilizar el parámetro -KeyFilePath para apuntar al archivo de claves)
 New-PSSession -HostName tomsssh.server.com -UserName thomas

Configurar PowerShell SSH Remoting

Para trabajar con PowerShell SSH, tendrá que completar los siguientes pasos en todos los sistemas y máquinas.

  • Instalar OpenSSH Server y Client
    • OpenSSH para Windows está disponible directamente en Windows 10 (1809) y Windows Server 2019 como característica opcional.
    • En Linux se instala OpenSSH dependiendo de su plataforma
  • Instalar PowerShell 6 en todos los sistemas
  • Configurar el subsistema SSH para alojar un proceso PowerShell en la máquina remota
  • Configurar la autenticación basada en contraseña o clave

Configurar paso a paso el remoting SSH en Windows

Paso 1: En primer lugar tendrás que instalar PowerShell 6 en Windows. Puedes seguir la entrada de mi blog para instalar fácilmente PowerShell 6.

Instalar PowerShell 6

Paso 2: Instalar el cliente OpenSSH y el servidor Open SSH. Para instalar el cliente y el servidor y configurar inicialmente el servidor OpenSSH, puede utilizar el siguiente comando.

 # Install the OpenSSH Client and Server Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # Initial Configuration of SSH Server Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # Confirm the Firewall rule is configured. It should be created automatically by setup. Get-NetFirewallRule -Name *ssh* # There should be a firewall rule named "OpenSSH-Server-In-TCP", which should be enabled

Paso 2.1: Dado que actualmente hay un error en OpenSSH para Windows, la ruta no acepta espacios. Es necesario crear un enlace simbólico a un directorio sin espacios. Ejecute el siguiente comando en el sistema de destino.

 mklink /D c:\pwsh "C:\Program Files\PowerShell"

Paso 3: Configure y edite el archivo sshd_config ubicado en $env:ProgramData\ssh en la máquina de destino.

Editar sshd_config

Comprobar que la autenticación por contraseña está habilitada

PasswordAuthentication yes

Añadir el subsistema para PowerShell

Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

Habilitar opcionalmente la autenticación por clave

PubkeyAuthentication yes

Si estás interesado en configurar la autenticación por clave con OpenSSH en Windows Server, echa un vistazo a la entrada del blog en ITOpstalk.com por Orin Thomas (Microsoft Cloud Advocate).

Paso 4: Reiniciar el servicio sshd

 Restart-Service sshd

Paso a paso Configurar SSH remoting en Linux (Ubuntu 18.04)

Paso 1: Primero tendrás que instalar PowerShell 6 en Linux. Puedes seguir la entrada de mi blog para instalar fácilmente PowerShell 6.

Instalar PowerShell 6 Linux

Paso 2: Instalar el cliente OpenSSH y el servidor Open SSH. Para instalar el cliente y el servidor y configurar inicialmente el servidor OpenSSH, puede utilizar los siguientes comandos.

sudo apt install openssh-clientsudo apt install openssh-server

Paso 3: Configurar y editar el archivo sshd_config en la ubicación /etc/ssh en la máquina de destino.

Comprobar que la autenticación por contraseña está habilitada

PasswordAuthentication yes

Añadir el subsistema para PowerShell

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Habilitar opcionalmente la autenticación por clave

PubkeyAuthentication yes

Paso 4: Reiniciar el servicio sshd

 sudo service sshd restart

SSH Remoting con PowerShell 6

Ahora puedes empezar a utilizar PowerShell SSH remoting para conectarte incluso desde diferentes sistemas operativos como Windows a Linux o Linux a Windows. PowerShell 6 SSH Remoting

Como ya hemos mencionado, puedes utilizar los mismos comandos con los que estás familiarizado como New-PSSession, Enter-PSSession o Invoke-Command.

PowerShell SSH Remoting Linux to Windows

Como cliente también puedes utilizar Azure Cloud Shell, que ejecuta PowerShell 6

Por supuesto, también puedes utilizar PowerShell SSH remoting para conectarte de Linux a Linux y de Windows a Windows. Puedes encontrar más información sobre PowerShell SSH remoting en las páginas de Microsoft Docs. Si tienes alguna duda, házmelo saber en los comentarios.

Etiquetas: Microsoft, PowerShell, PowerShell 6, PowerShell Core, PowerShell sobre SSH, Powershell Remoting, setup, Setup SSH PowerShell, SSH, SSH PowerShell, SSH Transport Última modificación: 4 de abril de 2019

Deja una respuesta

Tu dirección de correo electrónico no será publicada.