¿Cómo funciona la autenticación SSH?

¿Cómo funciona la autenticación SSH?

Mi pregunta se basa en este escenario: serverA, serverB, user1y user2. Ambos usuarios están presentes en ambos servidores.

user1on serverAtiene pares de claves SSH generados y la clave pública copiada al authorized_keysarchivo en serverB.

user2on serverAno tiene pares de claves SSH generados y tampoco on serverB.

user1inicia sesión en serverA. user1intenta utilizar SSH serverBcomo user2( ssh user2@serverb) y funciona bien, no se solicita contraseña.

Mi pregunta es esta. ¿Cómo funciona esto? user2no tiene claves públicas en serverB. Siempre pensé que SSH autentica al usuario que intenta iniciar sesión. ¿Significa esto que SSH autentifica al usuario serverBactualmente conectado ?user1serverA

Respuesta1

Esto no suena nada bien. ¿Estás usando OpenSSH? ¿O alguna otra implementación de ssh?

Volviendo a tu pregunta de cómo funciona, es como esperas (simplificado):

  • Conéctese al sistema remoto.
  • Pasar nombre de usuario.
  • El sistema remoto verifica que el usuario existe y solicita la clave si la autenticación de clave está configurada.
  • Comprueba que el usuario HOME/.ssh/authorized_keys existe
  • Comprueba las entradas en Authorized_keys una por una hasta que una funcione o no quede ninguna.
  • Si se encuentra una clave coincidente, la autenticación se realiza correctamente.

Todo se basa en las claves del archivo ~.ssh/authorized_keys del usuario de destino. Si no existe tal archivo/clave, algo está muy roto.

Respuesta2

En los comentarios mencionaste .rht_authorised key.

El archivo de clave autorizado por usuario predeterminado debe ser ~/.ssh/authorized_keysel que ~hace referencia al directorio de inicio del usuario. Si .rht_authorisedse utiliza, significa que se está utilizando una configuración OpenSSH no predeterminada.

/etc/ssh/sshd_configpuede definir (usando la AuthorizedKeysFilepalabra clave) una ubicación diferente (o varias ubicaciones) para el archivo de clave autorizado: si se define como una ruta absoluta y no hay tokens como %h, %uo %Use usan en la definición, entonces todos los usuarios usarán el mismo archivo de clave autorizado .

En las versiones más recientes de OpenSSH, también hay una AuthorizedKeysCommandpalabra clave que define un programa o script que se utilizará para buscar claves públicas al autenticar a un usuario. No se utiliza de forma predeterminada, pero puede usarse en algunas configuraciones de hosting o nube.

¿Qué grep -i authorizedkeys /etc/ssh/sshd_configinforma?

información relacionada