Configuración de la autenticación basada en claves SSH en Windows 10 / Server 2019

En este artículo, configuraremos la autenticación SSH con claves RSA en Windows para acceder de forma segura a servidores / computadoras remotos. Mostraremos cómo generar claves RSA (certificados) en Windows y configurar un servidor OpenSSH integrado en Windows 10 / Windows Server 2019 para la autenticación basada en claves (permite autenticarse en hosts remotos sin contraseñas).

La autenticación basada en claves SSH se usa ampliamente en el mundo de Linux, pero en Windows ha aparecido bastante recientemente. La idea es que la clave pública del cliente se agregue en el servidor SSH, y cuando un cliente intenta conectarse a él, el servidor verifica si el cliente tiene la clave privada correspondiente.

Generando SSH (RSA) en Windows

Debe generar dos claves RSA (públicas y privadas) en una computadora cliente que utilizará para conectarse al servidor remoto de Windows que ejecuta OpenSSH. Una clave privada se almacena en el lado del cliente (¡no se la pase a nadie!), Y se agrega una clave pública al llaves_autorizadas archivo en el servidor SSH. Para generar claves RSA en un cliente Windows, debe instalar el cliente OpenSSH.

En Windows 10 1809 (y más reciente) y Windows Server 2019, el cliente OpenSSH se instala como una característica separada:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Ejecute una sesión de PowerShell estándar (sin privilegios) y genere un par de claves RSA 2048 con el comando:

ssh-keygen

Se le pedirá que ingrese una contraseña para proteger la clave privada. Si especifica la contraseña, deberá ingresarla cada vez que use esta clave para la autenticación SSH. No he introducido ninguna frase de contraseña (no recomendado).

una herramienta ssh-keygen incorporada en Windows: genera claves rsa

Ssh-keygen creará el .ssh directorio en el perfil de un usuario actual de Windows (C: Users your_username) y coloque 2 archivos en él:

  • id_rsa – una clave privada
  • id_rsa.pub – una clave pública

Una vez que haya creado las claves RSA, puede agregar la clave privada al Agente SSH servicio, que permite administrar cómodamente las claves privadas y utilizarlas para la autenticación. El Agente SSH almacena claves privadas y las proporciona en el contexto de seguridad del usuario actual. Ejecute el servicio ssh-agent y configúrelo para que se inicie automáticamente mediante los comandos de administración del servicio PowerShell:

set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent

Agregue su clave privada a la base de datos del agente ssh:

ssh-add "C:Usersyouruser.sshid_rsa"

O como sigue:

ssh-add.exe $ENV:UserProfile.sshid_rsa

Configuración de OpenSSH Server en Windows para autenticarse mediante claves SSH

Luego copie la clave pública que ha generado en el cliente a su servidor SSH (en este ejemplo, es una computadora remota que ejecuta Windows 10 1903 y tiene OpenSSH configurado).

Copia el id_rsa.pub archivo al.ssh directorio en el perfil del usuario que utilizará para conectarse al servidor SSH. Por ejemplo, tengo un administración usuario en mi Windows 10, así que debo copiar la clave a C: Users administración .ssh claves_autorizadas.

ssh Authorized_keys archivo en la carpeta de perfil de un usuario de Windows

Puede copiar la clave pública al servidor SSH usando SCP:

scp C:Usersyouruser.sshid_rsa.pub [email protected]:c:usersadmin.sshauthorized_keys

Ahora puede conectarse a su servidor SSH de Windows sin una contraseña. Si no ha establecido una contraseña (frase de contraseña) para la clave privada, se conectará automáticamente a su host remoto de Windows.

Para conectarse a un host remoto utilizando un cliente SSH nativo, necesitará el siguiente comando:

ssh (username)@(SSH server name or IP address)

Por ejemplo:

ssh [email protected]

Significa que desea conectarse a un servidor SSH remoto con la dirección IP 192.168.1.15 bajo la administración cuenta. El Agente SSH intentará utilizar automáticamente la clave privada guardada antes para autenticarse.

Si no desea utilizar el servicio ssh-agent para administrar las claves SSH, puede especificar la ruta al archivo de clave privada que se utilizará para la autenticación SSH:

ssh [email protected] -i "C:Usersyouruser.sshid_rsa"

Si no pudo conectarse a su servidor SSH con la clave RSA y aún se le solicita que ingrese una contraseña, es probable que la cuenta de usuario a la que está tratando de conectarse sea miembro del grupo de administradores del servidor local (el grupo SID es S-1-5-32-544). Lo discutiremos más tarde.

acceder a Windows a través de SSH con clave privada (sin contraseña)

¿Cómo iniciar sesión en Windows con la clave SSH en el administrador local?

OpenSSH utiliza configuraciones especiales de acceso basadas en claves para los usuarios con privilegios de administrador local de Windows.

En primer lugar, utilice un archivo de claves C: ProgramData ssh administradores_autorizado_claves en lugar del llaves_autorizadas archivo en el perfil de usuario. Debe agregar su clave SSH a este archivo de texto (por motivos de seguridad, solo el grupo de Administradores y el SISTEMA deben tener permisos para leer este archivo).

Para utilizar el archivo de claves_autorizadas de un perfil de usuario y no mover los datos de la clave pública al archivo de claves_autorizadas_administradores, puede comentar la línea relacionada en el archivo de configuración de OpenSSH (C: ProgramData ssh sshd_config).

Comenta estas líneas:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

sshd_config AuthorizedKeysFile __PROGRAMDATA __ / ssh / administrator_authorized_keys

Permita el acceso a Windows usando claves RSA en el archivo sshd_config:

PubkeyAuthentication yes

Y deshabilite el inicio de sesión con contraseña ssh:

PasswordAuthentication no

No olvide reiniciar el servicio sshd después de guardar los cambios en sshd_config.

restart-service sshd

Aquí hay otra cosa importante. En versiones anteriores de OpenSSH, tenía que otorgar a NT Service sshd los permisos de lectura en el archivo Authorized_keys.

Para hacerlo, debe realizar una de las siguientes acciones:

  • Instala el Módulo OpenSSHUtils: Install-Module -Force OpenSSHUtils -Scope AllUsers . Para cambiar los permisos de archivo, ejecute este comando: Repair-AuthorizedKeyPermission -FilePath C:Usersadmin.sshauthorized_keys clave de reparación autorizada en el servidor de Windows openssh
  • Cambie los permisos NTFS para el archivo usando el módulo NTFSSecurity o icacls;
  • O puede deshabilitar StrictModes en el archivo sshd_config. De forma predeterminada, este modo está habilitado y evita la autenticación basada en claves, si las claves pública y privada no están bien protegidas. Descomentar la línea #StrictModes yesy cámbielo a StrictModes no. sshd-config - deshabilita el modo estricto

Entonces, ha configurado la autenticación SSH en Windows usando una clave RSA pública (certificado). Ahora puede utilizar este método de autenticación para acceder de forma segura a servidores remotos, reenviar automáticamente puertos en el túnel SSH, ejecutar scripts y realizar cualquier otra tarea relacionada con la automatización.

Artículos Interesantes