SSH (shell sécurisé) est un protocole réseau open source sécurisé qui permet aux utilisateurs de se connecter en toute sécurité à des systèmes Linux distants et à d'autres périphériques réseau. De plus, le protocole est utilisé pour le transfert de fichiers entre les systèmes Linux à l'aide du protocole de copie sécurisée (SCP) .
Habituellement, SSH demande aux utilisateurs des mots de passe avant de se connecter. Cependant, vous pouvez configurer la connexion SSH sans mot de passe à un autre système Linux distant à partir de votre système Linux. Cela améliore la confiance et s'avère pratique dans les tâches cron qui nécessitent une sauvegarde de fichiers à distance à l'aide du protocole SCP.
Dans ce guide, vous apprendrez à configurer une connexion SSH sans mot de passe à l'aide de clés ssh pour accroître la confiance entre deux serveurs.
Configurer l'environnement
ssh client : 66.152.163.19 (Ubuntu 18.04)
ssh remote Host : 173.82.2.236 (CentOS 7)
Générer des clés SSH sur le système client ( 66.152.163.19 )
La première étape de la configuration d'une connexion sans mot de passe consiste à générer des clés d'authentification ssh dans le système client. Les clés SSH sont des clés numériques qui créent la confiance entre les systèmes Linux.
Pour générer les clés ssh, exécutez la commande.
$ ssh-keygen
Vous serez invité à indiquer le fichier dans lequel enregistrer la clé. Appuyez sur "Entrée" pour enregistrer dans le répertoire d'emplacement par défaut (/root/.ssh)
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Appuyez sur Entrée.
Ensuite, vous serez invité à saisir une phrase de passe. Nous mettons en place une connexion sans mot de passe, appuyez deux fois sur "Entrée" pour ignorer.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Appuyez sur "Entrée" à chaque fois.
La sortie complète est présentée ci-dessous.
Exemple de sortie
Le ssh-keygen
La commande génère à la fois des clés ssh publiques et privées et les stocke dans /root/.ssh
répertoire.
Pour vérifier l'exécution :
ls /root/.ssh
Exemple de sortie
La clé publique est désignée par id_rsa.pub
.
La clé privée est désignée par id_rsa
.
Copier la clé publique ssh sur le système distant (173.82.2.236)
L'étape suivante consiste à copier la clé publique sur le serveur Linux distant. Ceci sera réalisé en utilisant le ssh-copy-id
commande comme indiqué ci-dessous.
ssh-copy-id remote_username@server_ip_address
Dans notre exemple, la commande sera :
ssh-copy-id [email protected]
Il vous sera demandé si vous êtes sûr de vouloir continuer à vous connecter. Tapez yes
et appuyez sur "Entrée"
The authenticity of host '173.82.2.236 (173.82.2.236)' can't be established.
ECDSA key fingerprint is SHA256:U4aOk0p30sFjv1rzgh73uhGilwJ2xtG205QFqzB9sns.
Are you sure you want to continue connecting (yes/no)? yes
Ensuite, vous serez invité à entrer le mot de passe du système distant. Tapez le mot de passe et appuyez sur "Entrée"
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
La sortie complète est présentée ci-dessous.
La clé publique ssh sera enregistrée dans /root/.ssh/authorized_keys
fichier sur le système distant.
Connexion au système distant
Après avoir copié la clé ssh publique sur le système distant, vous pouvez maintenant vous connecter sans être invité à saisir un mot de passe, comme indiqué.
ssh server-ip-address
Dans notre cas, ce sera :
ssh 173.82.2.236
Et c'est ainsi que vous configurez une configuration SSH sans mot de passe d'un système Linux client vers un serveur Linux distant.
- Supprimez la clé publique du système client. Si vous pensez que la clé privée est compromise, supprimez la clé publique du serveur distant et configurez-la à nouveau.
- La commande SSH ci-dessus fonctionne sans donner d'identifiant d'utilisateur car nous utilisons l'utilisateur root sur les deux serveurs. Si vous avez configuré une connexion sans mot de passe pour un autre utilisateur, veuillez également l'indiquer dans la commande SSH.