Mi pregunta se basa en este escenario: serverA
, serverB
, user1
y user2
. Ambos usuarios están presentes en ambos servidores.
user1
on serverA
tiene pares de claves SSH generados y la clave pública copiada al authorized_keys
archivo en serverB
.
user2
on serverA
no tiene pares de claves SSH generados y tampoco on serverB
.
user1
inicia sesión en serverA
. user1
intenta utilizar SSH serverB
como user2
( ssh user2@serverb
) y funciona bien, no se solicita contraseña.
Mi pregunta es esta. ¿Cómo funciona esto? user2
no 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 serverB
actualmente conectado ?user1
serverA
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_keys
el que ~
hace referencia al directorio de inicio del usuario. Si .rht_authorised
se utiliza, significa que se está utilizando una configuración OpenSSH no predeterminada.
/etc/ssh/sshd_config
puede definir (usando la AuthorizedKeysFile
palabra 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
, %u
o %U
se 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 AuthorizedKeysCommand
palabra 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_config
informa?