Sé que aquí hay docenas de preguntas sobre cómo conectarse a un servidor SSH sin tener que escribir su contraseña cada vez , y la respuesta siempre es "usar una clave pública". Bueno, me encuentro en la rara circunstancia en que realmente no es una opción. Por alguna razón inexplicable, el demonio OpenSSH en el servidor al que intento conectarme está configurado con
RSAAuthentication no
PubkeyAuthentication no
en /etc/ssh/sshd_config
. No tengo ningún acceso administrativo en el servidor, así que no puedo cambiar estas u otras opciones de configuración del servidor. (Por supuesto, tengo control total sobre la configuración del cliente: OpenSSH 5.8 en Linux).
¿Cuáles son mis opciones y, en particular, cuál es la opción más segura, para evitar tener que escribir mi contraseña cada vez que quiero SSH en este servidor? Mantengo mis propias computadoras bastante bien protegidas, así que supongamos que los riesgos de seguridad de almacenar la contraseña en un archivo en el cliente son aceptablemente bajos, si eso es realmente necesario.
Los otros métodos de autenticación que el servidor puede aceptar son evidentemente la API GSS (de la que no sé nada), el teclado interactivo (del que tampoco sé nada) y la contraseña. Estas son algunas opciones de configuración relevantes:
#ChallengeResponseAuthentication yes
#KerberosAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
#UsePAM no
y aquí hay un -vv
seguimiento de depuración ( ):
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
/etc/krb5.keytab
? GSSAPI (Kerberos) puede ser simple de configurar en el lado del cliente; Sin embargo, tendría que pedir el nombre de host del servidor. (También:keyboard-interactive
es muy similar apassword
, no excepto limitado a una "contraseña:" del sistema.)/etc/krb5.keytab
, pero tiene/etc/krb5/krb5.keytab
. No tengo acceso a los contenidos. El nombre del servidor essftp.pass.psu.edu
(no creo que haya ningún daño en dar ese nombre) si te ayuda a explicar el procedimiento.Respuestas:
En este caso, escribir (o grabar mejor) un script esperado sería una de sus opciones.
Cada sistema es diferente, por lo que no habrá un script, pero con Autoexpect es muy fácil grabar un script para este propósito.
fuente
De la información recopilada hasta el momento, el servidor
sftp.pass.psu.edu
admite la autenticación Kerberos 5 (GSSAPI) y está en eldce.psu.edu
reino.Kerberos es muy común en redes con muchos servidores y estaciones de trabajo; muchas grandes instituciones educativas lo tienen establecido. Una de sus ventajas sobre la autenticación de clave pública es que una sola
kinit
proporciona automáticamente credenciales a todas las máquinas en el reino Kerberos, sin tener que copiar las claves públicas a cada una. Otro es el soporte de protocolos: las mismas credenciales de Kerberos se pueden usar con más de 30 protocolos (correo, sistemas de archivos, bases de datos ...), no solo SSH.(Con respecto a "administradores que no tienen ni idea de Windows": el
dce.psu.edu
reino en realidad parece estar basado en Active Directory y alojado en servidores de Windows).Intenta seguir estos pasos:
Inicie sesión en Kerberos. (Las herramientas
kinit
yklist
pueden estar en "krb5-user" o un paquete similar, si no está incluido con el sistema).Si no se muestran errores, el inicio de sesión fue exitoso.
klist
debe mostrar un "krbtgt/dce.psu.edu@...
" elemento.Ahora conéctese al servidor SSH, con las
-vv
opciones; si la autenticación tiene éxito, bien.Si no es así, es posible que deba editar su
/etc/krb5.conf
archivo. Debajo de la[domain_realm]
sección, agregue lo siguiente:Con la configuración predeterminada de Krb5, el boleto obtenido en el n. ° 1 debe ser válido por 10 horas y renovable por hasta una semana. Sin embargo, no tengo forma de verificar la configuración.
Si desea mantener la contraseña en un archivo,
kinit your_principal < password.txt
debería funcionar un simple , aunque no es completamente confiable.Con
ktutil
él es posible hacer un "keytab" para usar en lugar de la contraseña.e inicie sesión con:
fuente
ssh -vv
son similares a la traza que publiqué, excepto que recibo endebug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database
lugar de lo que sucede con el archivo de caché de credenciales que no se encuentra.host/sftp.pass.psu.edu
, pero su nombre real debería haber sidohost/lutz.cac.psu.edu
. Puede128.118.2.85 sftp.pass.psu.edu
solucionar esto agregando " " a su / etc / hosts, pero es un poco feo - sería mucho mejor si los administradores arreglaran el servidor ...host/lutz.cac.psu.edu
yhost/sftp.pass.psu.edu
) en una sola tabla de claves. (Las versiones anteriores solo usaban la primera)/etc/hosts
según lo sugerido me saledebug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)
. Nada más en la salida es relevante para el error.Consideraría una solución mixta, donde ingresa la contraseña solo una vez, y la computadora mantiene un socket al servidor SSH remoto. Puede seguir estos pasos para configurarlo
ControlMaster
solo por ese motivo.fuente
screen
para evitar que las carcasas se terminen en la conexión interrumpida o colgada.