J'ai une instance d'une application s'exécutant dans le cloud sur une instance Amazon EC2 et je dois la connecter à partir de mon Ubuntu local. Cela fonctionne bien sur l'un des ubuntu local et aussi un ordinateur portable. J'ai reçu le message "Autorisation refusée (publickey)" lors d'une tentative d'accès à SSH vers EC2 sur un autre Ubuntu local. C'est si étrange pour moi.
Je pense que certains problèmes avec les paramètres de sécurité sur Amazon EC2 ont un accès IP limité à une instance ou qu'un certificat peut avoir besoin d'être régénéré.
Est-ce que quelqu'un connaît une solution?
linux
ssh
amazon-ec2
Vorleak Chy
la source
la source
Réponses:
La première chose à faire dans cette situation est d'utiliser l'
-v
option tossh
pour que vous puissiez voir quels types d'authentification sont essayés et quel est le résultat. Est-ce que cela aide à éclairer la situation?Dans votre mise à jour de votre question, vous mentionnez "sur un autre Ubuntu local". Avez-vous copié la clé privée ssh sur l’autre machine?
la source
ssh -i <keyfile> bitname@<ec2-address>
. Malheureusement, l'-v
option ne m'a pas aidé à trouver cela, mais c'est quand même très utile à vérifier!/var/log/auth.log
, parfois, vous verrez les messages suivants:Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys
ou autre choseComme il n'a pas été explicitement mentionné, sshd est par défaut très strict sur les permissions pour les
authorized_keys
fichiers. Donc, siauthorized_keys
est en écriture pour quelqu'un d'autre que l'utilisateur ou peut être rendu en écriture par quelqu'un d'autre que l'utilisateur, il refusera l'authentification (à moins que sshd ne soit configuré avecStrictModes no
)Ce que je veux dire par "peut être rendu accessible en écriture" est que, si l'un des répertoires parent est accessible en écriture à une personne autre que l'utilisateur, les utilisateurs autorisés à modifier ces répertoires peuvent commencer à modifier les autorisations de manière à pouvoir modifier / remplacer les allowed_keys.
De plus, si le
/home/username/.ssh
répertoire n'appartient pas à l'utilisateur et que celui-ci ne dispose donc d'aucune autorisation pour lire la clé, vous pouvez rencontrer des problèmes:Notez que Jane ne possède pas le
.ssh
fichier. Fixez ceci viaCes types de problèmes d'autorisation de système de fichiers n'apparaîtront pas
ssh -v
, et ils n'apparaîtront même pas dans les journaux sshd (!) Tant que vous n'avez pas défini le niveau de journalisation sur DEBUG./etc/ssh/sshd_config
. Vous voulez une ligne qui se litLogLevel DEBUG
quelque part. Rechargez le serveur SSH en utilisant le mécanisme fourni par la distribution. (service sshd reload
sur RHEL / CentOS / Scientific.) Un rechargement en douceur ne lâchera pas les sessions existantes./var/log/auth.log
sur les distributions basées sur Debian;/var/log/secure
sur RHEL / CentOS / Scientific.)Il est beaucoup plus facile de comprendre ce qui ne va pas avec la sortie de débogage, qui inclut des erreurs d'autorisation de système de fichiers. N'oubliez pas de revenir au changement
/etc/ssh/sshd_config
lorsque vous avez terminé!la source
Authentication refused: bad ownership or modes for directory
J'ai reçu cette erreur, car j'ai oublié d'ajouter une
-l
option. Mon nom d'utilisateur local n'était pas le même que sur le système distant.Cela ne répond pas à votre question, mais je suis arrivé ici à chercher une réponse à mon problème.
la source
ssh host -l user
est le même quessh user@host
, non?J'ai reçu ce message sur une nouvelle instance basée sur l'AMI Ubuntu. J'utilisais l'option -i pour fournir le fichier PEM, mais celui-ci affichait toujours le message "Autorisation refusée (publickey)".
Mon problème était que je n'utilisais pas le bon utilisateur. En exécutant ssh avec ubuntu @ ec2 ... cela a fonctionné normalement.
la source
sudo
, c'est pourquoi cela ne fonctionnait pas.Quelque chose de plus facile à lire que
ssh -v
(à mon avis bien sûr) l’esttail -f /var/log/auth.log
. Cela devrait être exécuté sur le serveur auquel vous essayez de vous connecter, en essayant de vous connecter. Il montrera les erreurs en texte brut.Cela m'a aidé à résoudre mon problème:
la source
tail -f /var/log/secure
Vérifiez votre fichier / etc / ssh / sshd_config . Là, trouver la ligne qui dit
Cette ligne doit être modifiée pour dire oui au lieu de non. Redémarrez également le serveur sshd après.
la source
/etc/ssh/sshd_config
- si nous ne pouvons même pas entrer dans le serveur?sudo service sshd reload
Peut-être pas pertinent pour l'affiche actuelle, mais pourrait aider les autres qui le trouvent en cherchant des réponses à des situations similaires. Au lieu de laisser Amazon générer la paire de clés ssh, je vous recommande de télécharger votre propre clé publique ssh standard par défaut sur Amazon et de l'indiquer lorsque vous exécutez une instance EC2.
Cela vous permet de supprimer la syntaxe de type "-i" dans ssh, d'utiliser rsync avec des options standard et d'utiliser la même clé ssh dans toutes les régions EC2.
J'ai écrit un article sur ce processus ici:
la source
Étrangement, mon problème s'est avéré que le serveur avait été redémarré et qu'un nouveau nom DNS lui avait été attribué. J'utilisais l'ancien nom DNS. Je sais que cela semble stupide mais il m'a fallu un certain temps pour comprendre cela.
la source
Si vous essayez de vous connecter à un téléphone CyanogenMod exécutant Dropbear, vous devez exécuter les lignes suivantes pour vous assurer que tout est autorisé:
ou
et
Cela a résolu le problème pour moi, sinon rien ne peut se connecter.
la source
Si vous utilisez CentOS 5, vous pouvez définir
StrictModes no
dans/etc/ssh/sshd_config
. Je partage le répertoire / home en utilisant NIS / NFS, et j'ai défini toutes les autorisations correctement, mais le mot de passe m'a toujours été demandé. Après avoir régléStrictModes no
, le problème a disparu!la source
La réponse de Greg explique comment mieux résoudre le problème. Cependant, le problème est que vous avez une clé ssh définie sur un côté de la transaction (le client), qui tente une authentification par clé publique plutôt que par mot de passe. Comme vous n'avez pas la clé publique correspondante sur l'instance EC2, cela ne fonctionnera pas.
la source
J'ai eu le même problème et après avoir essayé des tonnes de solutions qui ne fonctionnaient pas, j'ai ouvert le port SSH du pare-feu de mon routeur (le panneau de configuration du pare-feu de mon routeur est en désordre, il est donc difficile de savoir ce qui se passe). En tout cas, ça a réglé le problème :)
Super sanglant ennuyeux que l'erreur que vous obtenez est la permission refusée, ce qui implique qu'il y avait une sorte de connexion établie, grr.
la source
J'avais le même problème même si je suivais supposément toutes les étapes, y compris
Cependant, j'avais commencé mon exemple dans la région us-west-1. Donc, la commande ci-dessus devrait également spécifier cela.
Après cette commande, j'ai été en mesure de ssh dans l'instance. J'ai passé un peu de temps avant de comprendre le problème et espère que ce message aidera les autres.
la source
C'est un cas rare, mais si vous avez activé selinux et que vous utilisez nfs pour le répertoire avec les authorised_keys (par exemple, les répertoires personnels partagés), vous devrez soit désactiver selinux (non recommandé pour des raisons de sécurité, mais vous pouvez le désactiver temporairement. voir si cela pose problème) ou autoriser selinux à utiliser les répertoires de départ nfs. Je ne suis pas clair sur les détails, mais cela a fonctionné pour moi
setsebool -P use_nfs_home_dirs 1
la source
Je viens tout juste de rencontrer le même problème après avoir ajouté par inadvertance des autorisations d'écriture de groupe au répertoire de base des utilisateurs.
J'ai découvert que c'était la cause en s'exécutant
tail -f /var/log/secure
sur la machine et en voyant l'erreurAuthentication refused: bad ownership or modes for directory /home/<username>
.la source