web-dev-qa-db-fra.com

SSH invite le mot de passe malgré SSH-Copy-ID

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?

29
Aliud Alius

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.

32
Bruce Ediger

Les autorisations suivantes sont nécessaires:

  • Le dossier .ssh: 700 (drwx------)
  • La clé publique: 644 (-rw-r--r--)
  • La clé privée: 600 (-rw-------)
8
Sagar Naik

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.

5
izzy.artistic

Changer les autorisations du dossier ~/.SSH a résolu mon problème en fonction de ce message sur Super User SE .

1
Dogukan

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à

0
Schurik

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.

0
fheub

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

0
shabby

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)

0
dinbo

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.

0
rubynorails

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
0
gerard lapeche

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.

0
Florian Brucker