
Tengo un VPS con CentOS 6. He notado muchos intentos de inicio de sesión a través de SSH, por lo que quiero bloquearlo con autenticación basada en claves. Esto es lo que he hecho hasta ahora....
Ejecuté lo siguiente en mi máquina cliente (OSX)
ssh-keygen -t rsa
Hice esto con la configuración predeterminada (sin contraseña, nombres predeterminados, etc.)
Establecer los siguientes permisos en mi cliente
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
Copié mi clave pública en la raíz de mi carpeta de usuario en mi VPS usando el siguiente comando (nombre falso/ip)
scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub
Aquí noté que NO tenía un archivo Authorized_keys dentro de mi .ssh. Entonces usé el tacto para crearlo. Luego usé CAT para copiar el contenido del .pub en el archivo autorizado_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys
y establezca los permisos apropiados en .ssh y autorizado_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
En /etc/ssh/sshd_config descomenté lo siguiente
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Luego reinicié sshd
service sshd restart
Por lo que leí, esto es todo lo que debería hacer para habilitar la autenticación de clave pública. Sin embargo, cuando intento utilizar SSH sin proporcionar la clave privada -i, puedo acceder desde todos los dispositivos.
Respuesta1
Si una clave de cliente está en la ubicación predeterminada, ~/.ssh/id_$alg
se usa automáticamente a menos que use -o IdentitiesOnly=yes
(o la entrada del archivo de configuración equivalente) para deshabilitarla. Si puede conectarse desde un cliente que no tiene una copia de la clave privadaysin especificar una contraseña, entonces la autenticación en su servidor no está configurada correctamente. Si quieres usarsoloclave privada->autenticación de clave pública, configurar PasswordAuthentication no
.
PD: anything >>file
(y anything >file
también) crea el archivo si no existe, no es necesario touch
. Y el directorio remoto predeterminado scp
es su directorio de inicio, por lo que normalmente no es necesario especificarlo.
También:
RSAAuthentication
es para SSHv1, que se rompió hace décadas y nunca debe usarse y está deshabilitado de forma predeterminada en todas las versiones de OpenSSH durante mucho tiempo y se eliminó por completo del lado del servidor a partir de 7.4, aunque espero que CentOS 6 probablemente no tenga una versión tan reciente.
PubkeyAuthentication yes
y AuthorizedKeysFile .ssh/authorized_keys
(además de authorized_keys2
que es una reliquia y ya no se usa) son los valores predeterminados, por lo que no es necesario descomentarlos.
Respuesta2
Debe deshabilitar explícitamente la autenticación de contraseña en el servidor si solo desea permitir claves públicas/privadas. En su /etc/ssh/sshd_config
cambio o agregue la configuración:
PasswordAuthentication no
También me gusta desactivar explícitamente todos los demás tipos de autenticación que no uso, como Kerberos y GSSAPI.