J'ai une gouttelette Digital Ocean à laquelle j'essaie de me donner un accès ssh. Je ne sais pas ce qui a été fait auparavant. J'ai essayé d'ajouter ma clé publique via l'interface utilisateur de Digital Ocean. Ça n'a pas marché, j'ai continué permission denied (publickey)
.
J'ai accédé au serveur via la console Digital Ocean et ajouté manuellement ma clé publique à /root/.ssh/authorized_keys
. J'ai ensuite essayé d'utiliser ssh ssh [email protected]
. Cela n'a pas fonctionné (autorisation refusée).
J'ai donc essayé d'ajouter un nouvel utilisateur, créé le /home/me/.ssh
répertoire avec des autorisations 700
sur le .ssh
répertoire lui-même et 600
sur le authorized_keys
fichier. Alors j'ai essayé ssh [email protected]
. Cela n'a pas fonctionné non plus.
Le redémarrage du démon ssh ne change rien non plus.
Qu'est-ce que je rate?
Éditer:
Voici la sortie ssh détaillée.
https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9
Modifier 2:
LogLevel DEBUG3
production:
la source
LogLevel DEBUG3
insshd_config
). Je soupçonne que ce sont des problèmes d'autorisation, mais il peut y avoir plusieurs raisons à cela.[date omitted] www sssh[15029]: Connection closed by x.x.x.x port 55519 [preauth]
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys
? Pour le journal détaillé du serveur modifier le fichier mentionné ci - dessus, le service ssh restart, connectez -vous à nouveau et après le journal ( qui devrait être aussiauth.log
.Réponses:
Configuration du client
Installer
~/.ssh/config
La configuration des entrées d'hôte pour
ssh
est vraiment facile et vous évitera beaucoup de problèmes. Voici un exemple:Dans cet exemple, nous configurons
digitaloceanbox
etgithub
etgithub.com
afin de pouvoir exécuter les commandes suivantes:ssh github
ssh digitaloceanbox
Si nous voulons nous connecter en tant qu'utilisateur différent de celui spécifié dans le fichier de configuration, nous mettons juste
user@
au début:ssh user@digitaloceanbox
Génération de
ssh
clésNotez que j'ai spécifié le chemin complet de la clé privée que je veux générer lorsque vous y êtes invité
ssh-keygen
. J'ai également défini le commentaire (-C
) qui me permet d'identifier facilement les clés sur les machines distantes.Cela va créer deux fichiers:
.ssh/digitalocean-rsa
.ssh/digitalocean-rsa.pub
Lorsque vous fournissez votre
ssh
clé, assurez-vous que c'est la.pub
version !! Lorsque vous ajoutez à votre~/.ssh/config
, assurez-vous d'ajouter la bonne clé privée qui correspond à la clé publique que vous avez ajoutée au système.Configuration du serveur
La plupart des installations seront livrées avec l'authentification par clé publique activée. Si vous commencez à faire les choses à volonté, vous risquez cependant de rencontrer quelques problèmes. À l'endroit où l'OP se trouve dans leur problème, je recommande que l'OP supprime le
/root/.ssh/
répertoire pour recommencer.Il n'est pas recommandé d'utiliser
ssh
pour accéder à l'utilisateur root sur le système distant. Il est recommandé de vousssh
connecter à un autre utilisateur, puis de passer à root en utilisant votre mot de passe (sudo su -
).Ajouter des clés à l'hôte à l'aide
ssh-copy-id
Que vous décidiez de créer un autre utilisateur et de l'utiliser en
ssh
tant qu'utilisateur ou utilisateur root, voici la méthode recommandée pour placer lesssh
clés sur un serveur:ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Cela permet
sshd
de créer le répertoire et les fichiers nécessaires avec les autorisations nécessaires. Cela signifie qu'il n'y a aucune chance pour vous de gâcher les autorisations ou de devoir vous souvenir des détails. Utilisez simplement l'outil pour télécharger les clés.Désactiver l'authentification par mot de passe
Cela étant dit, une fois que vous avez saisi vous-même la clé et vérifié que vous pouvez vous connecter à l'aide des clés, il est recommandé de désactiver l'authentification par mot de passe
sshd
et de redémarrer le service:/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Et les nouveaux utilisateurs?
Si vous désactivez l'authentification par mot de passe, comment pouvez-vous saisir de nouveaux utilisateurs? Une façon consiste à ajouter des fichiers de modèle au
/etc/skel
répertoire. Une fois que vous avez saisi un utilisateur, procédez comme suit:sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
/etc/skel/.ssh/
afin qu'ils soient vides, sauf si vous souhaitez vous saisir automatiquement pour chaque utilisateur nouvellement créé.Lorsque vous créez de nouveaux utilisateurs avec
sudo useradd -m newuser
, cet utilisateur aura le.ssh/authorized_keys
, que vous pouvez modifier et aura les autorisations appropriées.Débogage
Vous pouvez regarder le
sshd
fichier journal pour voir pourquoi les connexions échouent ou sont refusées:sudo tail -f /var/log/auth.log
Pendant que vous exécutez cette commande, utilisez un autre terminal pour tenter une connexion. Plusieurs fois, les messages fournis sont assez bons pour aider à identifier le problème ou à trouver une solution en ligne.
la source
Ssh est assez pointilleux sur la propriété, les autorisations de fichiers et de répertoires avec les clés ssh.
~ / .ssh / devrait appartenir au propriétaire et disposer de 700 autorisations. ~ / .ssh / authorized_keys doit appartenir au propriétaire et disposer de 600 autorisations.
Donc, pour root:
Pour l'utilisateur moi:
Et puis réessayez.
Bien sûr, vous devez également vérifier dans / etc / ssh / sshd_config si root est autorisé à se connecter, ou simplement avec les clés ssh.
Si tu as :
alors vous pouvez définir:
Et puis redémarrez sshd:
et essayez à nouveau.
Notez qu'avec ssh, le démon sshd peut être redémarré même lorsque vous utilisez une session ssh pour cela.Openssh est conçu pour gérer cela.
En regardant vos extraits de fichier journal téléchargés, il semble que vous utilisez MacOSX? Pourriez-vous créer une nouvelle clé ssh là-bas?
De plus, j'ai découvert par le passé que lorsque j'ai plus d'une clé ssh privée sur mon ordinateur local pour mon utilisateur, cela rend parfois impossible la connexion à distance avec ssh. Cela a beaucoup aidé à faire des entrées sur l'ordinateur local dans le fichier ~ / .ssh / config, pour résoudre ce problème. Par exemple :
Après cela, essayez sur la ligne de commande sur votre ordinateur local:
Lorsque vous utilisez des clés ssh, ainsi que pas de clés ssh pour certaines autres connexions, vous pouvez, en plus des entrées avec des clés ssh, également définir une connexion ssh sans utilisation de clé ssh dans le fichier ~ / ssh / config, par exemple:
Cela fonctionne bien pour moi. Il est également possible de définir quelle clé utiliser sur la ligne de commande:
Cela pourrait faciliter le débogage, et sur la ligne de commande, cela devrait toujours fonctionner sur l'ordinateur local.
la source
sudo chmod 700 /home/me/
IdentityFile
ligne m'a sorti d'une ornière d'une heure.Vérifiez à nouveau la configuration du démon ssh (qui devrait l'être
/etc/ssh/sshd_config
) et vérifiez:Vérifiez également le fichier de configuration pour voir si AllowUsers ou AllowGroups a été défini, car ils agissent respectivement comme des listes blanches pour l'utilisateur et les groupes.
J'ai également remarqué que vous essayez d'ajouter une clé à l'utilisateur root. Par défaut, la connexion root doit être désactivée, mais vous pouvez également la modifier via le champ PermitRootLogin .
la source
Permission denied (publickey)
Selon les journaux que vous avez liés, je pense que vous avez des problèmes côté client pour ne pas trouver le fichier de clé privée .
Vérifiez d'abord que le fichier
~/.ssh/id_rsa
existe sur votre ordinateur local et qu'il est le bon _ (si vous en avez plus).Vérifiez les
.ssh
autorisations du dossier (devrait êtredrwx------
, sinon exécutésudo chmod 700 ~/.ssh
) et son contenu (devrait être-rw-------
, sinon exécutésudo chmod 600 ~/.ssh/*
) . Appliquez également les mêmes autorisations pour la machine distante.De plus, vous pouvez essayer de forcer l' utilisation de votre choix clé privée , donnant directement
ssh
avec le-i
paramètre.Vous pouvez exécuter quelque chose comme les éléments suivants:
ssh -i /path/to/your/private-key [email protected]
ou
ssh -i ~/.ssh/id_rsa [email protected]
Vous pouvez obtenir plus d'informations sur la page de manuel ssh (exécutée
man ssh
sur votre terminal) .Gardez également à l'esprit que si vous souhaitez vous connecter en tant
root
qu'utilisateur, votre compte root doit être activé avant la connexion, en créant un mot de passe pour celui-ci avecsudo passwd root
ou votre outil d'administration de serveur (Ubutntu a le compte root désactivé par défaut) . Vous pouvez obtenir plus d'informations sur Ubuntu Wiki .J'espère que cela aide.
la source
J'ai fini par réinstaller
openssh-server
ce qui a résolu le problème. Les solutions proposées sont toutes excellentes, mais elles n'ont pas fonctionné pour moi. Je n'ai aucune idée de la cause du problème, mais je pense que le développeur précédent peut avoir gâché la configuration et gâché les choses assez mal.Je doute qu'il y aura quelqu'un avec un problème aussi spécifique que le mien. Cependant, si vous disposez d'un droplet Digital Ocean, vous ne pouvez pas obtenir d'accès SSH, et aucune des solutions données ne fonctionne, réinstallez le serveur SSH en exécutant ces commandes via la console Digital Ocean. Attention, il s'agit d'un processus destructeur qui effacera les anciens fichiers de configuration
/etc/ssh/
(pas votre.ssh
répertoire).En supposant que vos clients / clés ssh sont en ordre, vous devriez pouvoir SSH dans votre serveur.
la source
Ce problème est apparu pour moi en utilisant l'image Debian sur Digital Ocean. D'une manière ou d'une autre pendant le bref processus de configuration, probablement lorsque j'ai défini le mot de passe root, le propriétaire de a
/root
été remplacé par l'utilisateurdebian
. J'ai vu ce qui suit dans/var/log/auth.log
:Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root
La simple exécution a
chown root:root -R /root
résolu le problème.HTH
la source
Je viens d'avoir un problème très similaire. Cela a fonctionné pour moi - Ajoutez cette ligne à / etc / ssh / sshd_config
Redémarrez ensuite ssh de la manière habituelle.
la source