Je configure automatiquement la connexion ssh sans taper de mot de passe sur un serveur en:
cd ~/.ssh
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server1
Cela fonctionne sur le serveur.
Plus tard, j'ai fait de même sur un autre serveur.
ssh-copy-id -i ~/.ssh/id_rsa.pub tim@server2
Immédiatement moi ssh tim@server2
, mais cela nécessite toujours mon mot de passe. Ai-je fait quelque chose de mal? Quelles sont les raisons possibles pour lesquelles je n'ai pas réussi à configurer sur le deuxième serveur? (notez que le deuxième serveur exécute le système de fichiers kerberos et 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:
J'ai essayé la méthode d'Anthon d'utiliser les clés Diffie-Hellman, mais il me demande toujours mon mot de passe.
$ 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
utilise le système de fichiers Andrew. Cela signifie-t-il que ma maison n'est pas montée avant la fin de la connexion? Comment le trouver pour votre question?tim
répertoire personnel de.Réponses:
Vous mentionnez que le deuxième serveur utilise le système de fichiers Andrew (AFS).
Je n'ai pas travaillé avec cela, mais d'après ce que je comprends, AFS est un système de fichiers sécurisé par Kerberos qui nécessite un ticket Kerberos pour fonctionner. Cela signifie que vous devez être connecté au domaine Kerberos de votre site pour pouvoir accéder à votre répertoire personnel.
Si vous vous connectez avec un mot de passe,
server2
est probablement configuré de sorte qu'il vous connecte à votre domaine Kerberos via PAM. Si vous utilisez des clés SSH, cependant, vousserver2
n'obtiendrez pas les informations nécessaires pour le faire et vous ne pourrez pas accéder à votre répertoire personnel.Heureusement, à partir de la
ssh -v
sortie de votre question, nous pouvons déduire que votre serveur aGSSAPI
activé l'authentification. Cela devrait vous permettre d'effectuer une connexion sans mot de passe, à condition que vous ayez un ticket Kerberos valide pour votre domaine. Procédez comme suit:Connectez-vous à
server2
et exécutez leklist
programme. Cela renverra quelque chose comme suit:recherchez la ligne qui commence par
Default principal:
. Il vous indique quel est votre principal kerberos (dans l'exemple ci-dessus, c'est[email protected]
). Notez ceci. Notez qu'il ne s'agit pas d'une adresse e-mail et qu'elle est sensible à la casse; c'est-à-dire que le principal se termine parEXAMPLE.ORG
nonexample.org
.kinit
avec le nom de votre principal (c'est-à-dire, dans l'exemple ci-dessus, ce seraitkinit [email protected]
). Si tout se passe bien, lorsque vous exécutez àklist
nouveau maintenant, vous verrez que vous avez un cache de tickets sur votre machine locale.ssh -K server2
, vous devriez pouvoir vous connecter et le système ne doit pas demander de mot de passe.Veuillez noter qu'en raison du fonctionnement de Kerberos, le cache des tickets a une validité limitée. Il n'est pas possible de demander un cache de tickets avec une validité plus longue que ce que l'administrateur du domaine a configuré (ce qui correspond généralement à environ 10 heures). Une fois votre ticket arrivé à expiration, vous devrez
kinit
recommencer et saisir à nouveau votre mot de passe.la source
krb5-user
package.Vous devez essayer de vous connecter à server2 avec:
et comparer cela avec le même, la connexion à
server1
cela vous dira exactement où les deux serveurs diffèrent.Il y a très probablement une différence entre
/etc/ssh/sshd_config
les deux machines. oùserver2
ou votre~/.ssh
a des problèmes d'accessibilité (pas assez restreint).À partir de la
-v
sortie, vous pouvez voir que vous proposez une clé privée RSA pour vérifier (en/home/tim/.ssh/id_rsa
), mais il semble queserver2
ne supporte que Diffie-Hellman (et essaie/home/tim/.ssh/id_dsa
ce qui n'est probablement même pas là).la source
~/.ssh
le serveur a bien vos clés autorisées installées (~/.ssh/authorized_keys
). Ensuite, ce que vous pourriez essayer de faire est dessh-keygen
générer une paire de clés diffie-hellman en utilisantssh-keygen -t dsa
et de la copier.~/.ssh/authorized_keys
sur le serveur. Est-ce à dire que les clés autorisées sont installées? (2) comment copier la paire de clés diffie-hellman générée sur le serveur? parscp ~/.ssh/id_dsa.pub tim@server2:~/.ssh/authorized_keys
? cela écrasera-t-il~/.ssh/authorized_keys
sur le serveur?Ajoutez l'entrée suivante dans la machine cliente à partir de laquelle vous essayez de ssh.
fichier de configuration:
/etc/ssh/ssh_config
Après cela, vous pourrez accéder à la machine.
Si vous ne disposez pas des autorisations de modification pour ce fichier, vous pouvez également ajouter
à
~/.ssh/config
(créer ce fichier s'il n'existe pas)la source