Je suis en train d'essayer de définir l'accès de Servera (Sunos) sur Serverb (certains Linux personnalisés avec connexion interactive du clavier) avec des touches SSH. Comme une preuve de concept, j'ai pu le faire entre 2 machines virtuelles. Maintenant, dans mon scénario de vie réel, cela ne fonctionne pas.
J'ai créé les clés de Servera, les copiées sur Serverb, chmod'd .sh dossiers à 700 sur Servera, b.
Voici le journal de ce que je reçois.
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: Peer sent proposed langtags, ctos:
debug1: Peer sent proposed langtags, stoc:
debug1: We proposed langtags, ctos: en-US
debug1: We proposed langtags, stoc: en-US
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: dh_gen_key: priv key bits set: 125/256
debug1: bits set: 1039/2048
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'XXX.XXX.XXX.XXX' is known and matches the RSA Host key.
debug1: Found key in /XXX/.ssh/known_hosts:1
debug1: bits set: 1061/2048
debug1: ssh_rsa_verify: signature correct
debug1: newkeys: mode 1
debug1: set_newkeys: setting new keys for 'out' mode
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: newkeys: mode 0
debug1: set_newkeys: setting new keys for 'in' mode
debug1: SSH2_MSG_NEWKEYS received
debug1: done: ssh_kex2.
debug1: send SSH2_MSG_SERVICE_REQUEST
debug1: got SSH2_MSG_SERVICE_ACCEPT
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Trying private key: /XXXX/.ssh/identity
debug1: Trying public key: /xxx/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /xxx/.ssh/id_dsa
debug1: Next authentication method: keyboard-interactive
Password:
Password:
Serverb a des actions assez limitées depuis son propriétaire personnalisé Linux.
Qu'est-ce qui pourrait se passer?
Modifier avec réponse:
Le problème était que je n'ai pas eu ces paramètres activés dans le SSHD_Config (reportez-vous à la réponse acceptée) et que tout en collant la clé de Servera sur serveur, il interpréterait la clé sous forme de 3 lignes distinctes.
Ce que j'ai fait était, au cas où vous ne pouvez pas utiliser SSH-Copy-ID comme je ne pouvais pas. Coller la première ligne de votre clé de votre fichier "Serverb" Autorisé_keys Fichier sans 2 derniers caractères, puis vous saisissez les caractères manquants de la ligne 1 et du premier à partir de la ligne 2, cela empêchera d'ajouter une "nouvelle ligne" entre le premier et deuxième ligne de la clé. Répétez avec la ligne 3D.
Je ne pense pas que vos clés ont été correctement copiées, si vous avez ssh-copy-id
disponible Je vous recommanderais d'utiliser cela.
$ ssh-copy-id user@remote_server
Password:
Une fois que vous avez entré le mot de passe, votre clé SSH sera copiée et vous devriez être capable de simplement vous fournir le mot de passe à nouveau.
Vérifiez également votre configuration SSH sur serveurb et vérifiez quelques points.
$ vi /etc/ssh/sshd_config
Une autre chose est de vérifier ces paramètres:
RSAAuthentication yes
PubKeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
La valeur de autorisékeysfile est l'endroit où vous devez coller votre clé SSH publique.
Vous pouvez collecter vos informations clés SSH à l'aide de: ssh-add -L
mise à jour
Lorsque ssh-copy-id
n'existe pas que vous pouvez faire l'ancienne façon:
$ cat ~/.ssh/id_rsa.pub | ssh user@remote_Host 'cat >> /home/user/.ssh/authorized_keys'
Votre journal de débogage indique que le serveur n'a accepté aucune de vos clés RSA privées. Vous devez spécifier le fichier de clés correct spécifique ou vérifier que le serveur a le bon fichier de clé publique.
Comme @Fredrik a dit, les autorisations sur les fichiers peuvent également jouer un rôle. SSH refusera d'utiliser des entrées clés publiques que d'autres peuvent écrire à des inscriptions clés privées que les autres peuvent lire.
Vous devriez vérifier l'autorisation des fichiers sur la machine distante à l'aide de ls -l ~/.ssh
Et place la permission:
[.____] chmod 600 ~/.ssh/authorized_keys
[.____] chmod 600 ~/.ssh/<private_key>
Ex: chmod 600 ~/.ssh/id_rsa
[.____] chmod 700 ~/.ssh/<public_key>
Ex: chmod 700 ~/.ssh/id_rsa.pub
[.____] chmod 700 /home/vmirea/.ssh
Basé sur ce qui précède, je ne peux pas dire quel est le problème. Cependant, la plupart des moments où j'ai rencontré cela, la raison a été que les clés ont eu que leurs droits soient déterminés à être trop lisibles (comme dans la lecture du groupe ou d'une autre, pas seulement de l'utilisateur). C'est là que je commencerais à chercher.
Ces problèmes (qui sont Les autorisations généralement liées) sont beaucoup plus facilement déboguées du côté serveur. Je vous recommande de démarrer un autre sshd en mode de débogage avec: /usr/sbin/sshd -d -p 2222
qui va démarrer un autre sshd sur le port 2222, puis exécuter ssh -p 2222 user@sshserver
du côté du client. Regardez ce qui sort du SSHD lorsque votre client essaie d'authentifier.
Les problèmes d'autorisations ne doivent pas nécessairement être simplement /home/$USER/.ssh
. Cela pourrait aussi être un problème avec /
, /home
, ou /home/$USER
. Si l'un de ceux-ci est en écriture de groupe, cela peut être un problème.
Un autre problème courant est que vous mettez mal-coller et de mettre des chevreakes au milieu de votre clé dans le fichier autorisé_keys
Le moyen le plus simple de configurer les clés est en cours d'exécution
ssh-copy-id <remotehost>
sur la machine qui se connectera (votre poste de travail par exemple)
Il devrait demander votre mot de passe, puis copier votre clé et configurer les autorisations de manière appropriée.