Configuré automáticamente el inicio de sesión ssh sin escribir la contraseña en un servidor:
cd ~/.ssh
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server1
Funciona en el servidor.
Más tarde hice lo mismo en un servidor diferente.
ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server2
Inmediatamente yo ssh tim@server2
, pero aún requiere mi contraseña. ¿Hice algo incorrectamente? ¿Cuáles son algunos motivos posibles por los que no configuré correctamente en el segundo servidor? (tenga en cuenta que el segundo servidor ejecuta el sistema de archivos Kerberos y Andrew)
$ ssh -v tim@server2
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to server2 [...] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: identity file /home/tim/.ssh/id_dsa type -1
debug1: identity file /home/tim/.ssh/id_dsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ecdsa type -1
debug1: identity file /home/tim/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ed25519 type -1
debug1: identity file /home/tim/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
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<3072<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: Server host key: RSA xxx
debug1: Host 'server2' is known and matches the RSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:70
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Trying private key: /home/tim/.ssh/id_dsa
debug1: Trying private key: /home/tim/.ssh/id_ecdsa
debug1: Trying private key: /home/tim/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:
Probé el método de Anthon de usar las llaves Diffie-Hellman, pero aún así me pide mi contraseña.
$ cd ~/.ssh
$ ssh-keygen -t dsa
$ ssh-copy-id -i ~/.ssh/id_dsa.pub tim@server2
$ ssh -v tim@server2
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to server2 [...] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: identity file /home/tim/.ssh/id_dsa type 2
debug1: identity file /home/tim/.ssh/id_dsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ecdsa type -1
debug1: identity file /home/tim/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tim/.ssh/id_ed25519 type -1
debug1: identity file /home/tim/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
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<3072<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: Server host key: RSA ...
debug1: Host 'server2' is known and matches the RSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:70
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/tim/.ssh/id_dsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive
debug1: Trying private key: /home/tim/.ssh/id_ecdsa
debug1: Trying private key: /home/tim/.ssh/id_ed25519
debug1: Next authentication method: keyboard-interactive
Password:
server2
usa el sistema de archivos Andrew. ¿Eso significa que mi casa no está montada antes de que se complete el inicio de sesión? ¿Cómo puedo averiguarlo para su pregunta?tim
directorio de inicio de.Respuestas:
Usted menciona que el segundo servidor está usando el Sistema de archivos Andrew (AFS).
No he trabajado con eso, pero por lo que entiendo, AFS es un sistema de archivos protegido por Kerberos que requiere un ticket kerberos para funcionar. Eso significa que debe iniciar sesión en el reino Kerberos de su sitio para poder acceder a su directorio de inicio.
Si
server2
inicia sesión con contraseña, es probable que esté configurado para que inicie sesión en su reino Kerberos a través de PAM. Sin embargo, si está utilizando claves SSH,server2
no obtendrá la información que necesita para hacerlo y no podrá acceder a su directorio de inicio.Afortunadamente, a partir del
ssh -v
resultado de su pregunta, podemos inferir que su servidor tieneGSSAPI
habilitada la autenticación. Esto debería permitirle realizar un inicio de sesión sin contraseña, siempre que tenga un ticket kerberos válido para su reino. Haz lo siguiente:Inicie sesión
server2
y ejecute elklist
programa. Esto devolverá algo en las siguientes líneas:busca la línea que comienza con
Default principal:
. Le dice cuál es su principal kerberos (en el ejemplo anterior, es[email protected]
). Escribe esto. Tenga en cuenta que no es una dirección de correo electrónico y que distingue entre mayúsculas y minúsculas; es decir, el principal termina conEXAMPLE.ORG
, noexample.org
.kinit
con el nombre de su director (es decir, en el ejemplo anterior, seríakinit [email protected]
). Si todo va bien, cuandoklist
vuelva a ejecutar ahora, verá que tiene un caché de tickets en su máquina local.ssh -K server2
, debería poder iniciar sesión y el sistema no debería solicitar una contraseña.Tenga en cuenta que debido a cómo funciona Kerberos, la caché de tickets tiene una validez limitada. No es posible solicitar un caché de tickets con una validez superior a la que configuró el administrador del reino (que suele ser algo así como 10 horas más o menos). Una vez que su boleto haya expirado, deberá ejecutar
kinit
nuevamente e ingresar su contraseña una vez más.fuente
krb5-user
paquete.Debe intentar conectarse al servidor2 con:
y compare eso con lo mismo, conectarse a
server1
esto le dirá exactamente dónde difieren los dos servidores.Lo más probable es que haya una diferencia en
/etc/ssh/sshd_config
ambas máquinas. dóndeserver2
o si~/.ssh
tiene problemas de accesibilidad (no lo suficientemente restringidos).En la
-v
salida, puede ver que ofrece una clave privada RSA para verificar en (in/home/tim/.ssh/id_rsa
), pero parece queserver2
solo es compatible con Diffie-Hellman (e intenta/home/tim/.ssh/id_dsa
que probablemente ni siquiera esté allí).fuente
~/.ssh
en el servidor tenga instaladas sus claves autorizadas (~/.ssh/authorized_keys
). Entonces, lo que podría intentar hacer esssh-keygen
generar un par de claves diffie-hellman usandossh-keygen -t dsa
y copiarlo.~/.ssh/authorized_keys
en el servidor. ¿Eso significa que tiene instaladas las claves autorizadas? (2) ¿cómo debo copiar el par de claves diffie-hellman generado al servidor? porscp ~/.ssh/id_dsa.pub tim@server2:~/.ssh/authorized_keys
? ¿sobrescribirá eso~/.ssh/authorized_keys
en el servidor?Agregue la siguiente entrada en la máquina cliente desde la que está intentando ssh.
archivo de configuración:
/etc/ssh/ssh_config
Después de eso podrás enviar ssh a la máquina.
Si no tiene permisos de edición para ese archivo, también puede agregar
para
~/.ssh/config
(crear este archivo si no existe)fuente