Cómo configurar la autenticación SSH basada en claves con Redtrust
Descripción general
Esta guía explica cómo autenticarse en un servidor SSH usando una clave almacenada en Redtrust en lugar de una clave local.
Contexto
En una configuración SSH estándar, el cliente utiliza un archivo de clave privada local (por ejemplo, id_rsa o id_ed25519) para autenticarse en un servidor. El servidor verifica la clave pública correspondiente almacenada en el archivo authorized_keys.
Cuando usas Redtrust, la clave privada no se almacena localmente. En su lugar, OpenSSH carga el proveedor PKCS#11 de Redtrust (RTPKCS11.dll) para acceder de forma segura a la clave privada desde Redtrust. Desde la perspectiva del servidor, la autenticación funciona como una autenticación estándar mediante clave pública. La única diferencia es cómo el cliente accede a la clave privada.
Antes de empezar
Para seguir esta guía necesitas lo siguiente:
- Un certificado subido a Redtrust.
- Una política que permita el uso del cliente SSH (
ssh.exe). - Un servidor SSH que permita la autenticación mediante clave pública.
- Para Windows Server, debes tener instalado OpenSSH y el servicio iniciado.
Si la instalación de OpenSSH falla, asegúrate de que la máquina tenga el último parche del sistema operativo. Para hacerlo ejecuta sconfig, selecciona Download and install updates e instala cualquier actualización pendiente.
Obtener la clave pública SSH
- Accede a la consola de administración.
- Ve a Certificates y localiza el que quieras usar.
- Ve al menú Actions > Download certificate > Download .pub (SSH).
El contenido del archivo .pub es la clave pública SSH utilizada en los pasos a continuación.
Configurar el servidor SSH
- Windows server
- Linux server
De forma predeterminada, la instalación de OpenSSH Server ya permite el inicio de sesión mediante autenticación con clave pública. Debes añadir la clave pública y asociarla a la cuenta de usuario.
En Windows, OpenSSH trata las cuentas de administrador de forma diferente y almacena las claves autorizadas en un archivo de todo el sistema dentro de ProgramData.
Para usuarios administradores
-
Crea el archivo
administrators_authorized_keys.New-Item -Force -ItemType File -Path C:\ProgramData\ssh\administrators_authorized_keys -
Añade la clave pública que descargaste de Redtrust a la lista de claves aceptadas.
Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value "TU_CLAVE_SSH" -
Configura los permisos del archivo.
Get-Acl C:\ProgramData\ssh\ssh_host_rsa_key | Set-Acl C:\ProgramData\ssh\administrators_authorized_keys -
Reinicia el servicio.
Restart-Service sshd
Para usuarios no administradores
-
Crea el archivo
authorized_keys.New-Item -Force -ItemType File -Path C:\Users\TU_USUARIO\.ssh\authorized_keys -
Añade la clave pública a la lista de claves aceptadas.
Add-Content -Force -Path C:\Users\TU_USUARIO\.ssh\authorized_keys -Value "TU_CLAVE_SSH" -
Configura los permisos del archivo.
Get-Acl C:\Users\TU_USUARIO | Set-Acl C:\Users\TU_USUARIO\.ssh
Get-Acl C:\Users\TU_USUARIO | Set-Acl C:\Users\TU_USUARIO\.ssh\authorized_keys -
Reinicia el servicio.
Restart-Service sshd
Añadir la clave pública
-
Accede al servidor con un usuario con privilegios sudo.
-
Si el directorio
.sshno existe, créalo manualmente.mkdir -p ~/.ssh -
En el directorio
.ssh, crea el archivoauthorized_keysy ábrelo:touch ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys -
Pega la clave pública de Redtrust que descargaste en el archivo (tendrá un aspecto similar a
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...). -
Establece los permisos correctos:
chmod 600 ~/.ssh/authorized_keysavisoSSH rechazará la autenticación si los permisos del directorio y de los archivos son demasiado permisivos.
Configurar SSH para permitir la autenticación mediante clave pública
En la mayoría de las distribuciones Linux, la autenticación mediante clave pública está habilitada por defecto.
-
Edita el archivo de configuración del servidor SSH:
sudo vim /etc/ssh/sshd_config -
Asegúrate de que la autenticación mediante clave pública esté habilitada:
PubkeyAuthentication yes -
Reinicia el servicio SSH:
sudo systemctl restart sshEn algunas distribuciones (por ejemplo, CentOS/RHEL), usa:
sudo systemctl restart sshd
Una vez que el servidor SSH confía en la clave pública, configura el cliente SSH para usar la clave privada almacenada en Redtrust.
Configurar el cliente SSH
- Windows client
- Linux client
Una vez que el servidor SSH acepta la autenticación mediante clave pública, configura el cliente SSH de Windows para usar la clave almacenada en Redtrust.
-
Conecta el agente de Redtrust.
-
Crea un archivo de configuración SSH llamado
config.C:\Users\TU_USUARIO\.ssh\configSi el directorio
.sshno existe, créalo manualmente. -
Añade la siguiente línea:
PKCS11Provider "C:\Windows\System32\RTPKCS11.dll"Esto indica a OpenSSH que use el proveedor PKCS#11 de Redtrust para acceder a las claves privadas almacenadas de forma segura en Redtrust.
-
Conéctate al servidor:
ssh TU_USUARIO@IP_DEL_SERVIDOR
Si el servidor confía en la clave pública correspondiente, la autenticación se realiza correctamente sin usar un archivo de clave privada local ni la contraseña del servidor.
Si el cliente solicita un PIN PKCS#11 de Redtrust, asegúrate de que el agente esté en ejecución.
-
Si el directorio
.sshno existe, créalo manualmente.mkdir -p ~/.ssh -
En tu máquina cliente, edita el archivo de configuración SSH.
vim ~/.ssh/config -
Añade lo siguiente al archivo de configuración:
Host mi-servidor
HostName IP_DEL_SERVIDOR
User TU_USUARIO
PKCS11Provider /usr/lib/libkeyfactorpkcs11.soSustituye la ruta si el módulo está instalado en una ubicación diferente.
-
Conéctate al servidor:
ssh mi-servidor
Esta configuración indica a OpenSSH que use el proveedor PKCS#11 de Redtrust para acceder a las claves privadas almacenadas de forma segura en Redtrust.
En Windows, Git puede usar su propia implementación de SSH en lugar del cliente OpenSSH incluido con el sistema operativo. Configura Git para usar el cliente OpenSSH de Windows:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
Después de esta configuración, Git utiliza el mismo cliente SSH que carga el proveedor PKCS#11 de Redtrust.
En Linux, Git usa el cliente SSH del sistema por defecto, por lo que no se requiere configuración adicional.