Conexión de Windows a través de SSH mediante el servidor OpenSSH integrado

Windows 10 1809 y Windows Server 2019 tienen un servidor SSH integrado basado en OpenSSH. En este artículo, mostraremos cómo instalar y configurar un servidor OpenSSH en Windows 10 y conectarlo de forma remota a través del protocolo SSH protegido (como en Linux 🙂).

¿Cómo instalar OpenSSH Server en Windows?

Veamos cómo instalar la función OpenSSH Server en Windows 10 1903 (en Windows Server 2019 el procedimiento es el mismo).

El paquete OpenSSH (como RSAT) se agrega a estas (y más nuevas) versiones de Windows como el Característica a pedido (FoD).

Si tiene acceso directo a Internet, puede instalar OpenSSH usando PowerShell:

Add-WindowsCapability -Online -Name OpenSSH.Server*

O usando DISM:

dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0

También puede instalar OpenSSH en Windows 10 a través del Ajustes panel (Aplicaciones -> Aplicaciones y funciones -> Administrar funciones opcionales -> Agregar una función). Encontrar Abrir servidor SSH en la lista y haga clic en Instalar en pc.

instalar la función del servidor openssh en Windows 10

Para asegurarse de que se haya instalado el servidor OpenSSH, ejecute el comando:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

State : Installed

comprobar la función del servidor openssh instalada en Windows Get-WindowsCapability

Configurar el servidor SSH en Windows 10 / Windows Server 2019

Después de haber instalado el servidor OpenSSH en Windows, debe cambiar sshd tipo de inicio del servicio a automático e iniciar el servicio usando PowerShell:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

iniciar el servicio sshd en windows 10
Con netstat, asegúrese de que el servidor SSH se esté ejecutando y esté esperando las conexiones en el puerto TCP 22:
netstat -na| find ":22"
comprobar ssh tcp puerto 22 escuchando en windows 10
Asegúrese de que Windows Defender Firewall permita conexiones entrantes a Windows a través del puerto TCP 22:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Name DisplayName Description Enabled
---- ----------- ----------- -------
OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

abrir el puerto ssh entrante en el firewall de Windows defender

Si la regla está deshabilitada (Habilitado = Falso) o faltante, puede crear una nueva regla de entrada con el cmdlet New-NetFirewallRule:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

De forma predeterminada, los componentes importantes de OpenSSH se encuentran en estas carpetas:

  • Ejecutables del servidor OpenSSH: C:WindowsSystem32OpenSSH
  • La sshd_config archivo (creado después del primer inicio del servicio): C:ProgramDatassh
  • Registro de OpenSSH: C:windowssystem32OpenSSHlogssshd.log
  • El archivo y las claves autorizados_keys: %USERPROFILE%.ssh

Después de la instalación de OpenSSH, se crea un nuevo usuario local (sshd) en la computadora.

Archivo de configuración del servidor OpenSSH (sshd_config)

Puede cambiar la configuración del servidor OpenSSH en el archivo de configuración:% programdata% ssh sshd_config.

Por ejemplo, para denegar la conexión SSH para la cuenta de usuario del dominio específico (o todos los usuarios del dominio), agregue estas directivas al final del archivo:

DenyUsers [email protected]
DenyUsers corp*

Para permitir la conexión SSH solo al grupo de dominio específico:

AllowGroups woshubsshadmins

O puede permitir el acceso a un grupo local:

AllowGroups sshadmins

Puede denegar el acceso a las cuentas con privilegios de administrador. En este caso, si necesita realizar alguna acción privilegiada en su sesión SSH, tendrá que usar runas.

DenyGroups Administrators

Las siguientes directivas permiten el acceso SSH usando claves y contraseñas RSA (veremos cómo usar claves RSA para acceder a Windows a través de SSH en el siguiente artículo en detalle):

PubkeyAuthentication yes
PasswordAuthentication yes

Puede cambiar el puerto al que OpenSSH recibe conexiones en la directiva Port del archivo sshd_config.

% programdata% ssh sshd_config archivo en Windows

Después de realizar cambios en el archivo sshd_config, debe reiniciar el servicio sshd:

restart-service sshd

¿Cómo conectarse a Windows 10 a través de SSH?

Ahora puede intentar conectarse a su Windows 10 a través del cliente SSH (estoy usando PuTTY, pero puede usar un cliente SSH de Windows integrado en su lugar).

En la primera conexión, aparecerá una solicitud estándar para agregar el host a la lista de hosts SSH conocidos.

putty acepta la clave rsa para un servidor ssh

Haga clic en Sí e inicie sesión en su Windows 10 como usuario de Windows.

iniciar sesión en windows 10 a través de ssh como en linux

Si la conexión SSH es exitosa, el shell cmd.exe comenzará con una cadena de solicitud.

admin@win10pc C:Usersadmin>

cmd.exe shell en la sesión ssh de Windows

Puede ejecutar diferentes comandos, scripts o aplicaciones en el símbolo del sistema.

ejecutar comando en windows 10 a través de ssh

Prefiero trabajar en la consola de PowerShell. Para iniciarlo, ejecute este comando:

powershell.exe

ejecutar powershell en windows ssh

Para cambiar el shell cmd.exe predeterminado a PowerShell para OpenSSH, realice cambios en el registro con el siguiente comando de PowerShell:

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String –Force

New-ItemProperty reemplazando el shell ssh de cmd.exe a powershell.exe

Reinicie su conexión SSH y asegúrese de que PowerShell ahora se use como un shell SSH predeterminado (esto se muestra mediante PS C:Usersadmin>).

consola powershell en sesión ssh de windows 10

La consola PowerShell se ha iniciado en su sesión SSH, y las características familiares funcionan en ella: autocompletado de pestañas, resaltado de color PSReadLine, historial de comandos, etc. Si el usuario actual es miembro del grupo de administradores locales, todos los comandos de sesión se ejecutan incluso elevados si UAC está habilitado.

Artículos Interesantes