Mi empresa ha deshabilitado la autenticación de clave pública SSH, por lo que debo ingresar manualmente cada vez que mi contraseña (se supone que no debo cambiar /etc/ssh/sshd_config
).
Sin embargo, gssapi-keyex
y gssapi-with-mic
las autenticaciones están habilitadas (consulte a continuación ssh
salida de depuración).
¿Cómo puedo usar el inicio de sesión automático en este caso?
¿Puedo aprovechar gssapi-keyex
y / o gssapi-with-mic
autenticaciones?
> ssh -v -o PreferredAuthentications=publickey hostxx.domainxx OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to hostxx.domainxx [11.22.33.44] port 22. debug1: Connection established. debug1: identity file /home/me/.ssh/identity type -1 debug1: identity file /home/me/.ssh/id_rsa type -1 debug1: identity file /home/me/.ssh/id_dsa type 2 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3 debug1: match: OpenSSH_5.3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.3 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Host "hostxx.domainxx" is known and matches the RSA host key. debug1: Found key in /home/me/.ssh/known_hosts:2 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: gssapi-keyex,gssapi-with-mic,password debug1: No more authentication methods to try. Permission denied (gssapi-keyex,gssapi-with-mic,password).
Comentarios
Responder
Tal vez.
- ¿Puede obtener un ticket para su principal en su sistema cliente, ya sea como parte del proceso de inicio de sesión estándar o manualmente (
kinit
, MIT Kerberos para Windows)? - ¿El servidor tiene un principal de kerberos o puede darle uno? Debe tener el formato
host/[email protected]
. - ¿Está habilitada la autenticación
GSSAPI
en su cliente? - ¿Su cliente sabe a qué reino pertenece el servidor, ya sea por el registro de recursos TXT de DNS o la asignación local?
Si respondió «sí» a todo de lo anterior, luego felicitaciones, puede usar GSSAPIAuthentication
.
- Puede también debe habilitar la delegación de credenciales, según su configuración.
Pasos de prueba:
(asumiendo: dominio = ejemplo.com; reino = EXAMPLE.COM)
-
kinit [email protected]
- Idealmente, esto lo maneja su proceso de inicio de sesión estándar al incluir
pam_krb5
opam_sss
(conauth_provider = krb5
) en elpam stack
apropiado.
- Idealmente, esto lo maneja su proceso de inicio de sesión estándar al incluir
-
kvno host/[email protected]
- Este es un paso de depuración.
ssh
hace esto automáticamente si tienes un caché válido y estás hablando con unsshd
que admitagssapi-with-mic
ogssapi-keyex
.
- Este es un paso de depuración.
-
dig _kerberos.example.com txt
debe devolver"EXAMPLE.COM"
- Alternativamente, la asignación podría almacenarse en la sección
[domain_realm]
de/etc/krb5.conf
como.example.com = EXAMPLE.COM
, pero el métododns
escala mucho mejor.
- Alternativamente, la asignación podría almacenarse en la sección
-
ssh -o GSSAPIAuthentication=yes [email protected]
- Para iniciar sesión en un nombre de usuario que no sea el de su principal en el servidor, tendrá que saber para asignarle los detalles de los que no estoy ingresando aquí.
Comentarios
- Hola, te he dado +1 hace un tiempo, pero de hecho no saber cómo verificar sus cuatro puntos. (No soy un administrador, solo un desarrollador). Por favor, ¿podría proporcionar una línea de comando para verificar la conexión SSH usando g
gssapiauthentication
? Quizás también pueda usargssapiauthentication
en mi máquina Linux. (¿Debería usarkinit
para eso?) Saludos;)
Responder
El método de 4 pasos es correcto (también hay registros SRV de Kerberos en DNS que son aún más elegantes y están presentes en todos los Active Directory). Utilizo esto todo el tiempo, y he estado defendiendo estos métodos de clave pública, principalmente por razones de seguridad y control.
Dicho esto, esto solo proporciona un inicio de sesión interactivo, aunque puede ser cuasi interactivo una vez que haya obtenido un ticket en su estación de trabajo.El ticket de Kerberos actúa de forma muy similar al agente SSH; una vez que lo tienes, las nuevas conexiones son instantáneas y sin contraseña; aunque con un límite de tiempo.
Para obtener un inicio de sesión interactivo por lotes, debe obtener un archivo de tabla de claves, un archivo que esencialmente contiene la contraseña de una cuenta Kerberos, muy parecido a la mitad privada de una clave SSH. Se aplican las precauciones de seguridad correspondientes; especialmente porque la tabla de claves no está cifrada ni protegida con contraseña.
Soy bastante reacio a proporcionarles a mis usuarios sus fichas de claves para sus cuentas personales, pero estoy usando agresivamente cuentas de servicio con permisos mínimos para varios trabajos por lotes, especialmente cuando es fundamental que las credenciales se deleguen al control remoto. sistema, algo que Pubkey simplemente no puede lograr.
Se pueden crear keytabs usando ktutil en Unix o KTPASS.EXE en Windows (este último de los servicios AD Kerberos). Tenga en cuenta que ktutil existe en dos versiones, Heimdal y MIT, y su sintaxis es diferente. La lectura de la página de manual de un sistema relevante ayuda.
fab
que iniciaría sesión en otra máquina (SSH gssapi sin pedir una contraseña) y abriría un shell? Puede proporcionarlo dentro de una respuesta. (En cinco minutos, no encontré dentro del tutorial cómo hacer eso). Saludos;)