J'utilise l'authentification de clé publique sur un serveur distant pendant un certain temps pour une utilisation de Shell distante ainsi que pour les supports SSHFS. Après avoir forcé un moniteur de SSHFS, j'ai remarqué que SSH a commencé à me demander un mot de passe. J'ai essayé de purger la télécommande .SSH/Authorize_keys de toute mention de la machine locale et j'ai nettoyé la machine locale des références à la machine distante. J'ai ensuite répété mon identifiant SSH-Copy-ID, cela m'a incité à un mot de passe et est retourné normalement. Mais lo et voici, quand I Ssh sur le serveur distant, je suis toujours invitée à un mot de passe. Je suis un peu confus quant à ce que la question pourrait être, des suggestions?
sshd devient étrange des autorisations sur $ à la maison, $ home/.ssh (les deux annuaires) et sur $ home/.ssh/hotted_keys.
Une de mes boîtes de Linux a fini par des autorisations DRWXRWXRWX sur mon annuaire de maison $. Une boîte d'arche Linux ne se connecterait absolument à utiliser des clés publiques avant d'avoir supprimé la permission de "W" pour le groupe, autrement sur mon annuaire de maison $.
Essayez de faire de la maison et de la maison/.sh/.sh/ont des autorisations plus restrictives pour le groupe et les autres. Voyez si cela ne laisse pas sshd faire ses affaires.
Les autorisations suivantes sont nécessaires:
.ssh
: 700 (drwx------)
644 (-rw-r--r--)
600 (-rw-------)
J'ai récemment expérimenté cette question aussi.
Il a été corrigé en modifiant les autorisations du $HOME
répertoire. Cependant, il suffit de courir chmod g-w ~/
n'a pas corrigé la question. En plus de chmod g-w ~/
J'ai aussi besoin de modifier les autorisations de others
sur le $HOME
répertoire en exécutant chmod o-wx ~/
Ensemble:
chmod g-w ~/
chmod o-wx ~/
Notez que je ne suis pas sûr si o-x
était nécessaire, je l'ai simplement couru comme précaution.
Changer les autorisations du dossier ~/.SSH a résolu mon problème en fonction de ce message sur Super User SE .
Comme cette question apparaît parmi les premiers résultats de recherche lorsque Googling pour ce comportement, j'ajouterai également ma solution:
Dans mon cas, ce n'était rien concerné aux autorisations. Pour une raison quelconque (ne me dérangeait pas de découvrir pour quelle raison en réalité, car j'ai trouvé une solution rapide) lors de l'exécution de la commande SSH, le programme n'a pas recherché le bon fichier d'identité. Une solution consistait à ajouter manuellement sur le serveur distant une clé SSH que le programme SSH a essayé d'utiliser. Vous pouvez observer ce que le programme SSH effectue lors de l'exécution de la commande en ajoutant -v à la commande:
ssh -v username@your-Host-ip-or-domain
Ensuite, vous prenez juste sur votre machine locale une clé publique pour laquelle les essais du programme SSH trouver un fichier d'identité/clé privée, sur un Mac par exemple:
cat ~/.ssh/id_rsa.pub
... et l'ajouter au fichier authorized_keys de la télécommande dans:
~/.ssh/authorized_keys
Un autre, dans mon cas, une meilleure solution consistait à ajouter un hôte personnalisé dans mon fichier de configuration SSH local. Sur mon Mac c'est:
/Users/my-user-name/.ssh/config
Ici vous pouvez ajouter par exemple quelque chose comme ceci:
Host mynewserver
HostName some.IP.number.or.domain
Port 20000 #if custom port is used and not the default 22
User the_root
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_for_my_new_server
Ensuite, vous avez juste besoin d'exécuter:
ssh mynewserver
... et voilà
Est-ce que le problème se produit également sur des connexions parallèles, c'est-à-dire si vous essayez de monter SSHFS tout en ayant une session SSH ouverte? Sinon, je devrais alors deviner que vous avez crypté votre annuaire de maison? Dans ce cas $HOME/.ssh/authorized_keys
ne deviendrait utilise que sur la machine distante après votre première connexion (à l'aide de votre mot de passe).
Vérifiez https://help.ubuntu.com/community/ssh/openssh/keys#troueLeOntion Pour une explication et la solution de contournement requise.
Dans mon cas sur le serveur distant, le fichier suivant:
/etc/ssh/sshd_config
eu la propriété suivante à non:
PubkeyAuthentication no
en commentant avec un hachage:
#PubkeyAuthentication no
a fait la moitié de l'astuce, le reste était de redémarrer le service SSH:
/etc/init.d/sshd restart
Source: après SSH-Copy-ID, il est toujours nécessaire de fournir un mot de passe
La raison pour laquelle la clé publique n'était pas survivant post-redémoint était que mon annuaire de domicile de serveur était crypté. (Vous faites cela lors de l'installation du serveur)
Je voudrais poster cela comme un commentaire, mais il serait probablement trop long. Je voulais juste ajouter que ssh-copy-id
Tente d'envoyer la clé publique à partir de l'emplacement /.ssh
À l'intérieur de votre dossier $HOME
.
Si vous essayez de ssh
comme racine avec une clé publique (enregistrer les commentaires liés à la sécurité), ssh-copy-id
Pourrait essayer de vous connecter avec la mauvaise clé publique si votre $HOME
La variable est définie sur autre chose que /root
(comme étant réglé dans votre répertoire de base normal de l'utilisateur), l'utilisateur root obtiendrait ainsi l'invité car la clé publique de la racine n'est pas installée sur le système distant.
Vous pouvez utiliser la doublure suivante pour spécifier la clé publique exacte:
pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
J'ai rencontré ce scénario dans la nature à quelques reprises (y compris ce matin) et j'ai pensé que j'essaierais de mettre mes 2 cents, juste au cas où quelqu'un se retrouva dans la même situation.
Comme d'autres contributeurs mentionnés, il s'agit probablement d'une question de permission.
Le meilleur moyen de diagnostiquer ceci est de redémarrer le démon SSH sur le serveur distant avec l'option de débogage sur - généralement l'option "-D". Le message Daemon OpenSSH est très explicite. Par exemple, vous verrez des messages tels que:
Authentication refused: bad ownership or modes for directory /some/path
Un autre problème possible est que le serveur ne prend pas en charge votre algorithme clé. Dans mon cas, j'ai trouvé les messages suivants dans mes journaux sshd
(/var/log/auth.log
dans mon cas):
userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]
Si tel est le cas, vous devez activer la prise en charge de cet algorithme dans votre configuration sshd
(ce qui pourrait nécessiter une mise à jour sur une version plus récente sshd
) ou vous devez changer votre clé pour Un algorithme supporté par le sshd
vous essayez de vous connecter.