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:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
Dans cet exemple, nous configurons digitaloceanbox
et github
et github.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:
Génération de ssh
clés
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Notez 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
- Clé PRIVÉE . Ne partagez jamais cela .
.ssh/digitalocean-rsa.pub
- Clé publique. C'est ce que vous stockez sur le serveur pour vous authentifier.
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 vous ssh
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 les ssh
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:
- Éditer
/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
- Modifiez tous les fichiers trouvés
/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.