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

  • Python ‘ s fabric hace un gran trabajo al lidiar con la automatización ssh.
  • Hola @ DanGarthwaite ¿Utiliza Fabric para iniciar sesión manualmente en otros servidores remotos? ¿Puede explicar cómo lo usa? Proporcione una respuesta. Saludos
  • Si no está ‘ t en un reino Kerberos (o dominio de Active Directory), es poco probable que GSSAPI sea útil para usted. Dicho esto, deshabilitar la autenticación de clave pública parece bastante absurdo.
  • @olibre Fabric es una utilidad para ejecutar comandos en uno o más servidores a través de SSH. Estos comandos suelen estar organizados en un » fabfile «, como un Makefile. Hace un trabajo extremadamente bueno al hacer que SSH desaparezca (una vez que se autentica) y maneja todas las formas en que los clientes y servidores SSH tienden a interrumpir el control. Hay un tutorial rápido disponible: docs.fabfile.org/en/1.7/tutorial.html
  • Por favor, @DanGarthwaite, ¿podría darnos un ejemplo de un archivo 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;)

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)

  1. kinit [email protected]
    • Idealmente, esto lo maneja su proceso de inicio de sesión estándar al incluir pam_krb5 o pam_sss (con auth_provider = krb5) en el pam stack apropiado.
  2. 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 un sshd que admita gssapi-with-mic o gssapi-keyex.
  3. 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étodo dns escala mucho mejor.
  4. 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 usar gssapiauthentication en mi máquina Linux. (¿Debería usar kinit 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *