219 votes

SSH Permission refusée (publickey)

J'essaie de me connecter à un Linode (sous Ubuntu 12.04 LTS) à partir de ma machine locale (également sous Ubuntu 12.04 LTS).

J'ai créé une clé privée et une clé publique sur ma machine locale et copié ma clé publique dans le fichier authorized_keys de mon Linode. Cependant, chaque fois que j'essaie de me connecter en ssh à mon Linode, j'obtiens le message d'erreur suivant Permission denied (publickey) .

Ce n'est pas un problème avec la façon dont ssh est configuré sur mon Linode parce que je peux y accéder depuis ma machine Windows en utilisant l'authentification par clé.

Dans mon .ssh sur ma machine Ubuntu locale, j'ai mes id_rsa y id_rsa.pub fichiers. Dois-je créer un fichier authorized_keys sur ma machine locale ?

EDIT : Voici ce que j'obtiens lorsque j'exécute ssh -vvv -i id_rsa [youruser]@[yourLinode] :

debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

7voto

canoodle Points 201

Assurez-vous également que le répertoire personnel de l'utilisateur (sur le serveur) appartient bien à l'utilisateur auquel vous vous connectez (dans mon cas, il s'agissait de root:root).

Ça aurait dû être :

sudo chown username:username /home/username;

5voto

Justin C Points 151

J'ai rencontré ce problème récemment avec mon serveur web.

En général, je conserve une liste des clés autorisées sur tous mes serveurs en ~/.ssh/authorized_keys2 . D'après mon expérience, sshd cherchera à ~/.ssh/authorized_keys o ~/.ssh/authorized_keys2 par défaut.

Dans le cas de mon serveur web, le fichier /etc/ssh/sshd_config avait cette ligne

AuthorizedKeysFile    %h/.ssh/authorized_keys

au lieu de

AuthorizedKeysFile    %h/.ssh/authorized_keys2

J'ai appliqué cette dernière, redémarré mon démon ssh, et résolu mon problème de connexion avec ssh en utilisant ma pubkey.

4voto

cmbind55 Points 41

Une autre cause possible pourrait être avec le AllowedUsers configuration en /etc/ssh/sshd_conf . NOTE : la liste est espace délimité (pas délimité par des virgules) comme je l'ai appris à mes dépens.

AllowUsers user1 user2 user3

4voto

anask Points 41

La méthode suivante peut fonctionner si vous pouvez accéder à la machineA et à la machineB indépendamment (par exemple, à partir de la machineC).

Si ssh-copy-id ne fonctionne pas, l'authentification par mot de passe pourrait être désactivée. Voici une solution de contournement .

Le fait d'avoir la clé publique de la machineA dans les clés autorisées de la machineB (c'est-à-dire ~/.ssh/authorized_keys) vous permettra d'utiliser ssh depuis la machineA. Ceci s'applique également à scp.

Après avoir généré les paires de clés en utilisant : ssh-keygen

Sur machineA , exécutez cat ~/.ssh/id_rsa.pub

Exemple de sortie :

ssh-rsa AAAAB3NzaSGMFZW7yB anask@mahineA

Copier la clé imprimée ( Command + C , oder CRTL + C ) puis l'ajouter au fichier ~/.ssh/authorized_keys de l'ordinateur de l'utilisateur. machineB .

Par exemple, exécutez la commande suivante sur machineB :

echo 'ssh-rsa AAAAB3NzaSGMFZW7yB anask@mahineA' >> ~/.ssh/authorized_keys

3voto

italkboy Points 30

Fonctionne également sur Ubuntu 16.04.

La question est dans sshd_config fichier

Voici la solution ULTIME :

Connectez-vous en tant que root sur votre serveur Ubuntu.

vi /etc/ssh/sshd_config

Maintenant, allez tout en bas et changez la valeur de "non" à "oui".

Il devrait ressembler à ceci :

Changez en no pour désactiver les mots de passe en texte clair dans les tunnels.

PasswordAuthentication yes
service sshd reload

pour prendre effet.

Maintenant vous pouvez simplement utiliser une clé en utilisant la commande suivante depuis votre machine LOCALE (aka ordinateur portable etc)

Ainsi, pour ouvrir une nouvelle fenêtre de terminal et ne PAS se connecter au serveur, il suffit d'utiliser cette commande :

ssh-copy-id john@serverIPAddress

(Remplacez john par votre nom d'utilisateur).

vous devriez être prêt à partir

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X