Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Creacion de un usuario nuevo
- sudo adduser apiuser
- sudo usermod -aG sudo apiuser
- ##Genera un par de llaves publico-privadas para la Autoridad Certificadora (crear en Maquina Local)
- ssh-keygen -t ed25519 -f ~/.ssh/"nombre_de_llave_CA" -C "SSH User CA" (String que permirita identificar es es para CA solamente)
- ##Genera un par de llaves publico-privadas para un usario del servidor
- ssh-keygen -t ed25519 -f ~/.ssh/"nombre_de_llave" -C "user@pc" (String que permitira identificar de quien es el certificado)
- ##FIRMA LA LLAVE PUBLICA PARA GENERAR EL CERTIFICADO
- ssh-keygen -s ~/.ssh/"nombre_de_llave_CA" \
- -I usuario@vps-cert \ # un identificador legible
- -n usuario_remoto \ # principal debe coincidir con el de /etc/ssh/authorized_principals/apiuser
- -V +52w \ # vigencia del certificado (52 semanas de ejemplo)
- ~/.ssh/"nombre_de_llave".pub
- # Esto crea: ~/.ssh/id_ed25519-cert.pub
- ##COMPROBAR "Principals" del certificado creado###
- ssh-keygen -L -f ~/.ssh/id_ed25519-cert-pub ##nombre del certificado.pub
- # En la VPS
- mkdir -p /etc/ssh
- nano /etc/ssh/trusted_user_ca_keys #PEGA_AQUI_EL_CONTENIDO_DE_tu_~/.ssh/"nombre_de_llave_CA".pub
- chmod 644 /etc/ssh/trusted_user_ca_keys #Le otorga permisos de solo lectura a otros usuarios que no sean root al archivo
- # En la VPS
- mkdir -p /etc/ssh/authorized_principals
- echo "usuario_remoto" > /etc/ssh/authorized_principals/apiuser
- chmod 644 /etc/ssh/authorized_principals/apiuser #Le otorga permisos de solo lectura a otros usuarios que no sean root al archivo
- ##EDITAR sshd_config en la VPS
- # === Autenticación con certificados de usuario (OpenSSH CA) ===
- PubkeyAuthentication yes
- TrustedUserCAKeys /etc/ssh/trusted_user_ca_keys
- # Opción A (global): todos los usuarios usan el mismo archivo de principals
- AuthorizedPrincipalsFile /etc/ssh/authorized_principals/%u
- # === Endurecimiento recomendado (fase de transición) ===
- # Mantén passwords activados por ahora hasta probar el certificado:
- PasswordAuthentication yes
- KbdInteractiveAuthentication no
- ChallengeResponseAuthentication no
- # Paso intermedio: bloquea root por password, pero permite su llave/cert mientras migras
- PermitRootLogin prohibit-password
- # Límites sensatos
- LoginGraceTime 30
- MaxAuthTries 3
- ClientAliveInterval 300
- ClientAliveCountMax 2
- ##COMPROBAR ERRORES DE SINTAXIS EN EL "sshd_config"
- sshd -t
- ##AUTORIZANDO QUE SSHD (ROOT) LEA LOS ARCHIVOS
- sudo chmod 644 /etc/ssh/authorized_principals/apiuser
- sudo chown root:root /etc/ssh/authorized_principals/apiuser
- ## REINICIAR SERVICIO SSH
- systemctl reload ssh
- ##Inicia una conexion ssh "evitando el error Too may auth failures"
- ssh -vvv -o IdentitiesOnly=yes -i ~/.ssh/id_MyPrivKey apiuser@IP
- ## SI LA CONEXION ES EXITOSA SE DEBE EDITAR NUEVAMENTE EL ARCHIVO SSHD_CONFIG
- PermitRootLogin no
- PasswordAuthentication no
- sudo systemctl reload ssh
Advertisement