SSH (Secure Shell) est un protocole qui peut fournir une connexion à distance de manière sécurisée. La connexion à distance FTP ou Telnet est utilisée pour transmettre des mots de passe de compte et des informations sous forme de texte clair pratique dans le réseau, ce qui est très peu sûr. Et SSH chiffrera le contenu de la communication, même si les informations sont indiscrètes, il ne pourra pas déchiffrer le mot de passe envoyé, les commandes spécifiques et les résultats de retour des commandes.
La gestion à distance des systèmes Linux utilisant le protocole SSH nécessite le déploiement et la configuration du programme de service sshd . Sshd est un programme de service de gestion à distance développé sur la base du protocole SSH et propose deux méthodes de vérification de la sécurité:
- Authentification par mot de passe - connexion avec authentification par compte et mot de passe
- Authentification basée sur les clés: générer localement une paire de clés, télécharger la clé publique de la paire de clés sur le serveur et comparer avec la clé publique du serveur
Les informations de configuration du service sshd sont stockées dans le fichier / etc / ssh / sshd_config . Les paramètres et fonctions communs inclus dans le fichier de configuration sshd sont les suivants:
- Port 22 - le port de service sshd par défaut
- ListenAddress 0.0.0.0-Définissez l'adresse IP à laquelle le serveur sshd écoute
- Numéro de version du protocole 2-SSH
- HostKey / etc / ssh / ssh_host_key —— Lorsque la version du protocole SSH est 1, l'emplacement où la clé privée DES est stockée
- HostKey / etc / ssh / ssh_host_rsa_key —— Lorsque la version du protocole SSH est 2, l'emplacement où la clé privée RSA est stockée
- HostKey / etc / ssh / ssh_host_dsa_key —— Lorsque la version du protocole SSH est 2, l'emplacement de stockage de la clé privée DSA
- PermitRootLogin yes —— Définissez s'il faut autoriser l'administrateur root à se connecter directement
- StrictModes rejette directement la connexion lorsque la clé privée de l'utilisateur distant change
- MaxAuthTries 6-nombre maximum de tentatives de mot de passe
- MaxSessions 10-nombre maximum de terminaux
- PasswordAuthentication yes - autorise ou non l'authentification par mot de passe
- PermitEmptyPasswords pas d'autoriser ou non la connexion par mot de passe vide
Remarque: ssh_config est le fichier de configuration client (comment se connecter aux autres paramètres de configuration de la machine)
sshd_config est le fichier de configuration côté serveur (paramètres pour la façon dont les autres me connectent)
Ne modifiez généralement pas le fichier de configuration client.
Utilisez ssh pour la connexion à distance, le format est: ssh [paramètre] username @ hostIPaddress
1. Connectez-vous avec la vérification du mot de passe du compte
[root @ localhost ~] # ssh 192.168 . 75.132
L'authenticité de l'hôte ' 192.168.75.132 (192.168.75.132) ' ne peut pas être établie.
L'empreinte digitale de la clé ECDSA est SHA256: 2WVtTvXeAlDpu1IieRaV / RPEgyVgD9X94VKNemR1Kzs.
L'empreinte digitale de la clé ECDSA est MD5: 79 : 02 : 30 : 46 : 40 : a1: fe: 45 : 54 : ab: 48 : 5d: 34 : db: 62 : 69 .
Êtes-vous sûr de vouloir continuerconnexion (oui / non)? oui
Avertissement: Ajout permanent de ' 192.168.75.132 ' (ECDSA) à la liste des hôtes connus.
root @ 192.168 . 75,132 ' mot de passe: #输入管理员的密码
Dernière connexion: Sun avr 19 16 : 14 : 59 2020
[root @ promouvoir ~ ] #
[root @ promouvoir ~ ] #
[root @ promouvoir ~ ] # exit
fermeture de session
Connexion à 192.168 . 75.132 fermé.
Définir la valeur du paramètre PermitRootLogin dans le fichier / etc / ssh / sshd_config sur no ne permettra plus aux administrateurs de se connecter à distance au serveur pour réduire la probabilité que des pirates ne cassent des mots de passe.
Modifiez le fichier de configuration sshd de 192.168.75.150
Redémarrez le service après avoir modifié le fichier de configuration
[root @ localhost ~ ] # systemctl redémarrer sshd
[root @ localhost ~] # systemctl activer sshd
Test
[root @ localhost ~] # ssh 192.168 . 75.150
root @ 192.168 . Mot de passe 75.150 :
autorisation refusée, veuillez réessayer.
La connexion par mot de passe est:
- Le client envoie une demande de connexion au serveur
- Le serveur reçoit la demande du client et envoie sa propre clé publique au client
- Le client utilise la clé publique pour crypter le mot de passe de connexion et l'envoyer au serveur
- Le serveur utilise la clé privée pour déchiffrer. Si le mot de passe est correct, le client est autorisé à se connecter
Lorsque vous vous connectez pour la première fois, un avertissement est généré indiquant que la clé publique n'est pas approuvée. Lorsque la clé publique est reçue, elle est enregistrée dans le fichier client $ HOME / .ssh / known_hosts. La prochaine fois que vous vous connectez, vous ne générez plus d'avertissement. Vous pouvez saisir directement le mot de passe.
2. Utilisez la clé de sécurité pour vérifier la connexion
1. Générez une paire de clés dans l'hôte client
[root @ localhost ~] # ssh-keygen Génération d' une paire de clés rsa publique / privée. Entrez le fichier dans lequel enregistrer la clé (/ root /. ssh / id_rsa): appuyez sur la touche Entrée ou définissez le chemin de stockage des clés Entrez la phrase secrète ( vide pour aucune phrase de passe): Appuyez sur la touche Entrée ou définissez le mot de passe de la clé Entrez à nouveau la même phrase de passe: Appuyez sur la touche Entrée ou confirmez le mot de passe de la clé Votre identification a été enregistrée dans / root /. ssh / id_rsa. Votre clé publique a été enregistré dans / root /. ssh / id_rsa.pub. L'empreinte digitale clé est: SHA256: flbEv7iJvF /CkvrCXIrRaM8E63dqsBO75V7YCo7oiKw [email protected] La clé ' image de randomart est de: + --- [RSA 2048 ] ---- + | | | . | | o | | . . . | | = S. . | | B.oo. +. . | | o. & + oB + o | | o. . o * + XB.o = | | Eoo. o ** == o + | + ---- [SHA256] ----- +
[root @ localhost ~] # ls .ssh /
id_rsa id_rsa.pub known_hosts
2. Transférez le fichier de clé publique généré dans l'hôte client vers le serveur et utilisez la commande ssh-copy-id pour ajouter automatiquement le contenu du fichier de clé publique de l'hôte connecté au fichier authorized_keys du serveur.
[root @ localhost ~] # ssh -copy- id 192.168 . 75,132
/ usr / bin / ssh de id : INFO: tente de se connecter à la nouvelle clé (s), pour filtrer toutes celles qui sont déjà installés
/ usr / bin / ssh -copy- id : INFO: 1 clé ( s) restent à installer - si vous êtes invité maintenant, c'est pour installer les nouvelles clés
root @ 192.168 . Mot de passe
75.132 : 输入 服务 端 密码
Nombre de clé (s) ajoutée (s): 1
Essayez maintenant de vous connecter à la machine, avec: "ssh « 192.168.75.132 » "
et vérifiez faire en sorte que seule la clé (s) que vous vouliez ont été ajoutés.
3. Configurez le serveur pour autoriser uniquement la connexion par authentification par clé
[root @ promouvoir le bureau] # vim / etc / ssh / sshd_config
PermitAuthentication non
[root @ promouvoir le bureau] # systemctl redémarrer sshd
[root @ promouvoir le bureau] # systemctl activer sshd
4. Sur le client, essayez de vous connecter au serveur, à ce moment vous pouvez vous connecter sans mot de passe
[root @ localhost ~] # ssh 192.168 . 75.132
Dernière connexion échouée : Dim 19 avril 16 : 36 : 13 CST 2020 de: 0 à: 0
Il y a eu 1 tentative de connexion échouée depuis la dernière connexion réussie .
Dernière connexion : Dim 19 avr 16 : 23 : 09 2020 à partir de 192.168 . 75.150
[root @ promouvoir ~] #
L'identifiant de connexion est:
- Le client stocke sa clé publique sur le serveur
- Le client se connecte au serveur à distance et le serveur envoie une chaîne aléatoire au client
- Le client crypte la chaîne avec sa propre clé privée et l'envoie au serveur
- Le serveur utilise la clé publique stockée à l'avance pour déchiffrer. S'il réussit, cela indique que l'utilisateur est digne de confiance, ce qui autorise le shell de connexion sans mot de passe
# ssh-keygen
# ssh-copy-id user @ server IP
# ssh user @ server IP