SSH sans mot de passe ne fonctionne pas avec Mountain Lion


1

Nous utilisons Backuppc dans notre petit bureau, avec une combinaison de PC sous Windows 7 et d’utilisateurs utilisant leurs Macbooks. Backuppc est assis sur un serveur exécutant Ubuntu 12.04.2. Ssh sans mot de passe fonctionne bien avec Snow Leopard et Lion, mais je me bats avec Mountain Lion, car il demande sans cesse le mot de passe. J'ai suivi la procédure d'échange des clés publiques rsa et ajouté la clé publique de l'utilisateur Backuppc à la machine hôte Mountain Lion. D'abord, j'ai ajouté la clé au fichier "allowed_keys2" dans le répertoire .ssh. Cela n'a pas fonctionné. Après avoir fait quelques recherches, certaines personnes ont suggéré d'utiliser plutôt «allowed_keys», car il semblerait que Mountain Lion ait mis à jour le paquet sshd. Cela n'a pas fonctionné non plus. Je pense que les autorisations sont définies correctement pour le répertoire .ssh (700) et les clés autorisées. fichier (édité: 644). Il continue à demander le mot de passe à chaque fois que j'essaie de ssh de l'utilisateur Backuppc à la machine avec Mountain Lion. Vraiment énervant. Ci-dessous, je joins la sortie de débogage au cas où n'importe qui pourrait fournir des indications. Merci beaucoup pour votre aide.

backuppc@ubuntu:~$ ssh -v user1@192.168.10.55
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.10.55 [192.168.10.55] port 22.
debug1: Connection established.
debug1: identity file /var/lib/backuppc/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /var/lib/backuppc/.ssh/id_rsa-cert type -1
debug1: identity file /var/lib/backuppc/.ssh/id_dsa type -1
debug1: identity file /var/lib/backuppc/.ssh/id_dsa-cert type -1
debug1: identity file /var/lib/backuppc/.ssh/id_ecdsa type -1
debug1: identity file /var/lib/backuppc/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
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: Server host key: RSA 4c:c3:21:8f:6e:59:60:a9:5f:94:75:01:2d:e2:03:3e
debug1: Host '192.168.10.55' is known and matches the RSA host key.
debug1: Found key in /var/lib/backuppc/.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: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /var/lib/backuppc/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /var/lib/backuppc/.ssh/id_dsa
debug1: Trying private key: /var/lib/backuppc/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
Password:

Suite aux conseils sur les commentaires, j'ai exécuté un 'sshd -d' sur la machine cible Mountain Lion. J'ai d'abord arrêté 'ssh' puis j'exécute le 'sshd -d'. Je vous colle les résultats ci-dessous:

$sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist
$sudo /usr/sbin/sshd -d

debug1: sshd version OpenSSH_5.9p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: fd 6 clearing O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 6 out 6 newsock 6 pipe -1 sock 9
debug1: inetd sockets after dupping: 5, 5
Connection from 192.168.10.100 port 34179
debug1: Client protocol version 2.0; client software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: permanently_set_uid: 75/75 [preauth]
debug1: list_hostkey_types: ssh-rsa,ssh-dss [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
debug1: SSH2_MSG_KEXINIT received [preauth]
debug1: kex: client->server aes128-ctr hmac-md5 none [preauth]
debug1: kex: server->client aes128-ctr hmac-md5 none [preauth]
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received [preauth]
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent [preauth]
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT [preauth]
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: KEX done [preauth]
debug1: userauth-request for user user1 service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
debug1: PAM: initializing for "user1"
debug1: PAM: setting PAM_RHOST to "ubuntu"
debug1: userauth-request for user user1 service ssh-connection method publickey [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: test whether pkalg/pkblob are acceptable [preauth]
debug1: temporarily_use_uid: 502/20 (e=0/0)
debug1: trying public key file /Users/user1/.ssh/authorized_keys
debug1: fd 6 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /Users/user1
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 502/20 (e=0/0)
debug1: trying public key file /Users/user1/.ssh/authorized_keys2
debug1: fd 6 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /Users/user1
debug1: restore_uid: 0/0
Failed publickey for user1 from 192.168.10.100 port 34179 ssh2
debug1: audit_event: unhandled event 6
debug1: userauth-request for user user1 service ssh-connection method keyboard-interactive [preauth]
debug1: attempt 2 failures 1 [preauth]
debug1: keyboard-interactive devs  [preauth]
debug1: auth2_challenge: user=user1 devs= [preauth]
debug1: kbdint_alloc: devices 'pam' [preauth]
debug1: auth2_challenge_start: trying authentication method 'pam' [preauth]
Postponed keyboard-interactive for user1 from 192.168.10.100 port 34179 ssh2 [preauth]
debug1: do_pam_account: called
debug1: PAM: num PAM env strings 2
Postponed keyboard-interactive/pam for user1 from 192.168.10.100 port 34179 ssh2 [preauth]
debug1: do_pam_account: called
Accepted keyboard-interactive/pam for user1 from 192.168.10.100 port 34179 ssh2
debug1: monitor_read_log: child log fd closed
debug1: monitor_child_preauth: user1 has been authenticated by privileged process
debug1: PAM: establishing credentials
User child is on pid 3240
debug1: PAM: establishing credentials
debug1: permanently_set_uid: 502/20
debug1: Entering interactive session for SSH2.
debug1: server_init_dispatch_20
debug1: server_input_channel_open: ctype session rchan 0 win 1048576 max 16384
debug1: input_session_request
debug1: channel 0: new [server-session]
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
debug1: server_input_global_request: rtype no-more-sessions@openssh.com want_reply 0
debug1: server_input_channel_req: channel 0 request pty-req reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req pty-req
debug1: Allocating pty.
debug1: session_new: session 0
debug1: session_pty_req: session 0 alloc /dev/ttys001
debug1: Ignoring unsupported tty mode opcode 37 (0x25)
debug1: Ignoring unsupported tty mode opcode 52 (0x34)
debug1: Ignoring unsupported tty mode opcode 71 (0x47)
debug1: server_input_channel_req: channel 0 request env reply 0
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req env
debug1: server_input_channel_req: channel 0 request shell reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req shell
debug1: Setting controlling tty using TIOCSCTTY.

Qu'en est-il de la machine Mountain Lion, quelles erreurs obtenez-vous?
NickW

Oui, lancez sshd -dsur le Mountain Lionbaby pour voir ce qui se passe.
Octobre--

Bonjour, merci pour vos commentaires. J'ai fait comme vous dites, j'ai d'abord arrêté le ssh en utilisant sudo launchctl unload /System/Library/LaunchDaemons/ssh.plistpuis couru sudo /usr/sbin/sshd -d. Je vous colle les résultats à la fin de la question initiale.
ibagur

Lorsque vous essayez de vous connecter à partir de backuppc, il y aura plus de messages de journalisation sur la machine Mountain Lion. Ce sont ce qui est le plus important.
Kent

désolé, je n'ai pas tout posté. Je l'ai édité maintenant.
ibagur

Réponses:


3

La réponse d'ibagur est proche mais il a les clés inversées. La clé publique du système distant doit être dans votre ~/.ssh/known_hostsfichier local . Votre clé publique doit être dans le ~/.ssh/**authorized_keysfichier du système distant . Contrairement à ce qui précède, le authorized_keysfichier DOIT avoir 600 autorisations. Les étapes à effectuer sont

  1. Copiez votre clé publique dans le ~/.sshrépertoire du système distant à l' aide de la commande scp id_rsa.pub username@remotehost:/path/to/home/username/.ssh/mykey.tmpen vous assurant que le nom du fichier que vous utilisez est unique sur le système distant. Si vous y êtes invité, acceptez la clé du système distant après avoir vérifié qu'il s'agit bien de la clé appropriée pour le système distant (faites confiance à la clé). Cela ajoutera la clé publique du système distant à votre ~/.ssh/known_hostsfichier.
  2. Connectez-vous au système distant en utilisant une authentification par mot de passe.
  3. Changer les annuaires en ~/.sshutilisantcd .ssh
  4. Installez votre clé dans le file usingfichier `` ~ / .ssh / registered_keys cat mykey.tmp >> registered_keys`
  5. Assurez-vous que le authorized_keysfichier est en mode 600 en utilisantchmod 600 authorized_keys
  6. Déconnectez-vous et testez, vous ne devriez plus être invité à entrer un mot de passe.

Si vous avez toujours des problèmes, vous pouvez essayer de vous connecter au système distant en utilisant ssh -vvpour obtenir des résultats de débogage, mais d'après mon expérience, le client ne fournit pas beaucoup d'informations utiles. Vous devrez probablement exécuter le démon SSH du système distant en mode débogage, comme indiqué dans la question d'origine.


2

Ok, merci à tous pour les astuces et suggestions sur les commentaires. Je l'ai finalement fait fonctionner. Un problème est survenu avec les autorisations sur le répertoire utilisateur Mountain Lion (pas sur les répertoires .ssh et authorised_keys). Donc, je résume ci-dessous les étapes que j’ai suivies au cas où quelqu'un serait confronté à un problème similaire:

  1. Réparez les autorisations sur la machine cible Mountain Lion (celle à laquelle je me connecte avec ssh à partir de l'utilisateur serveur / backuppc).
  2. Assurez-vous que le répertoire utilisateur Mountain Lion dispose des autorisations 755.
  3. Supprimez le .sshrépertoire et le contenu si vous l'avez déjà créé.
  4. Créez à nouveau le .sshrépertoire avec 700 autorisations et un nouvel ensemble de clés RSA pour l'utilisateur Mountain Lion avec ssh-keygen.
  5. Ajoutez la clé publique de l'utilisateur Mountain Lion au known_hostsfichier du serveur .
  6. Ajoutez la clé publique du serveur sur le authorized_keysfichier (n'utilisez pas 'allowed_keys2' sur Mountain Lion et assurez-vous que les autorisations utilisateur sont définies sur 644

Mes dir. Utilisateur perms ont été réglés sur 771. Lorsque vous avez tapé /var/log/secure.log, le message "L'authentification a été refusée: propriétaires ou modes incorrects pour le répertoire / Utilisateurs / myuser". Le changer en 755 a fonctionné
shadfc

1

Je crois que le authorized_keysfichier doit avoir des autorisations définies sur 644.

Si les autorisations sont différentes, la présence du fichier est complètement ignorée et vous êtes renvoyé au prochain moyen d'authentification, dans ce cas, mot de passe.


Le mien fonctionne très bien avec 640, 700 et même 600 ..
NickW

600 est à recommander

salut merci. J'ai essayé 644, 640 et 700 et continue de me demander le mot de passe
ibagur
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.