6.8K
Las últimas versiones de Windows incluyen un servidor OpenSSH integrado que permite conectar de forma remota hosts de Windows a través de una conexión SSH cifrada. Este artículo describe cómo habilitar y configurar un servidor SSH en Windows 10/11 y conectarse a él mediante clientes SSH.
Cómo instalar el servidor SSH en Windows
OpenSSH Server está disponible como característica opcional en todas las versiones nuevas de Windows a partir de Windows 10 (compilación 1809) y Windows Server 2019. Esto significa que no necesita software de servidor SSH de terceros para acceder a Windows de forma remota a través de SSH.
La función del servidor OpenSSH se puede instalar en Windows 10 y 11 a través de la aplicación Configuración.
- Ir a Ajustes > Sistema > Características opcionales (o ejecute el comando: configuración de ms: características opcionales)
- Hacer clic Ver característicaseleccionar Servidor OpenSSH (Servidor de shell seguro (SSH) basado en OpenSSH, para administración segura de claves y acceso desde máquinas remotas) y haga clic Instalar.
O utilice este comando de PowerShell para instalar el servidor SSH:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Compruebe si el servidor OpenSSH está instalado:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Server*'
Los componentes de OpenSSH se descargan de Internet. En un entorno fuera de línea (desconectado), puede agregar el servidor OpenSSH desde el Funciones bajo demanda (FoD) Imagen ISO.
- Descargue la imagen ISO de FoD para su versión de Windows desde el Centro de servicios de licencias por volumen (VLSC) o desde el portal My Visual Studio (requiere suscripción activa).
- Monte la imagen ISO de FoD en Windows en una unidad de DVD virtual;
- Instale OpenSSH.Server desde la unidad virtual con el comando:
Add-WindowsCapability -online -name OpenSSH.Server~~~~0.0.1.0 -source -Source "E:\" -LimitAccess
Nota. Para versiones anteriores de Windows, puede instalar manualmente el puerto Win32-OpenSSH desde el repositorio de GitHub.
Los archivos binarios de OpenSSH se encuentran en la carpeta C:\Windows\System32\OpenSSH\.
Cómo habilitar y configurar el servidor OpenSSH en Windows
El servicio OpenSSH está detenido de forma predeterminada en Windows. Utilice el comando Get-Service de PowerShell para comprobar su estado:
Get-Service -Name sshd
Inicie el servicio sshd y habilite el inicio automático:
Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic'
Luego habilite la regla de firewall entrante de Windows Defender que permite conexiones remotas al servidor SSH (en el puerto TCP 22):
Get-NetFirewallRule -Name OpenSSH-Server-In-TCP |Enable-NetFirewallRule
Verifique que el servicio sshd se esté ejecutando y escuchando en el puerto TCP/22:
netstat -nao | find /i '":22"'
En Windows se pueden utilizar varios archivos de configuración que contienen la configuración del servidor OpenSSH.
- Archivo de configuración global (para todo el sistema): %programdata%\ssh\sshd_config
- Un archivo de configuración de usuario en la carpeta de perfil de usuario: %perfildeusuario%\.ssh\configuración
Puede abrir y editar el archivo sshd_config usando Bloc:
Notepad.exe $env:PROGRAMDATA\ssh\sshd_config
De forma predeterminada, la mayoría de las opciones de configuración en el archivo sshd_config están deshabilitadas. Para habilitar y configurar la opción OpenSSH, elimine el carácter # al principio de la línea para descomentarlo.
Veamos algunas de las directivas sshd_config:
- Habilite la autenticación basada en claves SSH: Autenticación Pubkey sí
- Deshabilitar la autenticación de contraseña: ContraseñaAutenticación no
- Cambie el número de puerto SSH (del TCP 22 predeterminado): Puerto 22
El Permitir grupos, Permitir usuarios, Denegar gruposy Denegar usuarios Las directivas permiten especificar qué usuarios y grupos tienen permitido o denegado conectarse a Windows a través de SSH. Por ejemplo:
- Denegar usuarios theitbros\jbrown@192.168.1.15 — denegar la conexión al nombre de usuario jbrown desde el host 192.168.1.15;
- Denegar usuarios theitbros\* — impedir que todos los usuarios del dominio itbros se conecten al host a través de SSH;
- AllowGroups theitbros\ssh_allow theitbros\admins— Permitir únicamente a usuarios de grupos específicos conectarse mediante SSH al host;
- PermitirUsuarios mylocaluser1@192.168.31.100 – permitir el acceso SSH bajo la cuenta mylocaluser1 desde el 192.168.31.100 anfitrión.
Nota. Las reglas de permitir y denegar de sshd se procesan en el siguiente orden: DenyUsers, AllowUsers, DenyGroups y AllowGroups.
Reinicie el servicio sshd después de realizar cambios en el archivo sshd_config:
Get-Service sshd| Restart-Service –force
Cambie el shell OpenSSH predeterminado de cmd.exe a PowerShell usando el comando:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Conéctese a Windows a través de SSH
Ahora puede utilizar cualquier cliente compatible con OpenSSH, ya sea desde un host Linux o Windows, para conectarse a una computadora con Windows habilitado para SSH.
Por ejemplo, en Linux, ejecute el comando:
ssh admin@192.168.1.90
- administración es un usuario local de Windows con el que desea conectarse. Esta cuenta debe ser miembro del grupo de administradores integrado.
- 192.168.1.90 es una dirección IP o nombre DNS del host remoto de Windows.
Ingrese la contraseña de un usuario de Windows y se iniciará un shell SSH con un host remoto.
En Windows 10 y 11, puede utilizar el cliente OpenSSH integrado (ssh.exe, que se instala de forma predeterminada) para establecer una sesión SSH remota. Compruebe si está habilitado con el comando:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Client*'
Puede conectarse a un host SSH remoto desde el símbolo del sistema de Windows:
ssh user123@192.168.13.202
La primera vez que se conecta a un host SSH remoto, debe agregar su clave pública a la lista de hosts conocidos escribiendo Sí -> Ingresar.
Si desea alojar SSH en una cuenta de dominio AD, utilice el siguiente formato de nombre de usuario:
ssh theitbros\kirill@192.168.13.202
Ingrese la contraseña del usuario y debería aparecer un símbolo del sistema:
Para copiar archivos a un host remoto de Windows a través de una sesión SSH, use el comando:
scp.exe D:\PS\test1.log root@192.168.13.202:c:\temp
Configurar la autenticación basada en claves para OpenSSH en Windows
El servidor Windows OpenSSH admite la contraseña y clave pública métodos de autenticación. De forma predeterminada, solo la autenticación de contraseña está habilitada en el servidor Windows OpenSSH.
Veamos cómo habilitar y configurar la autenticación basada en claves OpenSSH en lugar de la autenticación de par de nombre de usuario/contraseña.
Genere pares de claves públicas/privadas utilizando el algoritmo Ed25519 en un cliente Windows, ejecute el comando:
ssh-keygen -t ed25519
Nota. Para obtener protección de clave adicional, puede establecer una frase de contraseña.
La herramienta ssh-keygen generará dos archivos clave y los guardará en el perfil del usuario actual (C:\Users\%username%\.ssh):
- id_ed25519 – clave privada
- id_ed25519.pub – clave pública
El siguiente paso es agregar la clave pública generada al claves_autorizadas archivo en el servidor OpenSSH. Copie la clave pública del archivo id_ed25519.pub y péguela en el administradores_claves_autorizadas archivo en el servidor SSH:
Notepad.exe $env:PROGRAMDATA\ssh\administrators_authorized_keys
Nota. El administradores_claves_autorizadas El archivo se utiliza si el usuario pertenece al grupo de administradores. Para usuarios de Windows sin privilegios, agregue la clave pública al .ssh/claves_autorizadas archivo en el perfil de usuario.
Abra el archivo C:\ProgramData\ssh\sshd_config y habilite la autenticación basada en claves:
PubkeyAuthentication yes
Reinicie el servicio sshd:
Get-service sshd|Restart-Service
El agente ssh ahora utilizará automáticamente la clave privada para la autenticación cuando se conecte a un host remoto.
O puede especificar manualmente la ruta al archivo clave:
ssh username1@192.168.13.202 -i "C:\Users\user\.ssh\id_ed25519"
En Windows, los registros SSH se pueden ver usando la consola del Visor de eventos (eventvwr.msc). Expanda Registros de aplicaciones y servicios > OpenSSH > Operativo.