Maison >Opération et maintenance >exploitation et maintenance Linux >Quelles sont les méthodes utilisées par Linux ssh ?

Quelles sont les méthodes utilisées par Linux ssh ?

王林
王林avant
2023-05-22 23:58:131325parcourir

Le progiciel openssh contient les commandes suivantes :

sshd ―― programme serveur ssh
sftp-server ―― programme serveur sftp (un protocole similaire à ftp mais fournissant un cryptage des données)
scp ―― client serveur sftp non interactif , utilisé pour télécharger/télécharger des fichiers sur le serveur
sftp - client de serveur sftp interactif, l'utilisation est la même que celle de la commande ftp.
slogin —— Alias ​​​​de ssh
ssh —— Le programme client du protocole ssh, utilisé pour se connecter au système distant ou exécuter des commandes à distance
ssh-add —— Programme lié à l'agent ssh, utilisé pour ajouter une clé dsa au agent ssh
ssh-agent ―― agent ssh
ssh-keyscan ―― générateur de clé publique ssh

La manière la plus couramment utilisée d'utiliser ssh est de remplacer telnet pour la connexion à distance. Différent de la connexion par mot de passe de telnet, ssh prend également en charge plusieurs méthodes de connexion telles que publickey, keybord interactive, gssapi, etc. Contrairement à telnet, qui n'a qu'une seule façon de saisir le mot de passe du système. Actuellement, les méthodes de connexion les plus couramment utilisées sont les méthodes traditionnelles de connexion par mot de passe et par clé publique. Ce qui suit prend redhat as4 comme exemple pour illustrer l'utilisation de ces deux méthodes de connexion.

[root@mail ~]# ssh 172.18.6.227
l'authenticité de l'hôte '172.18.6.227 (172.18.6.227)' ne peut pas être établie.
l'empreinte digitale de la clé rsa est 43:80:f2:e1:9b:b6 :6e:c0:e2:dd:57:8f:ed:89:b3:81.
êtes-vous sûr de vouloir continuer à vous connecter (oui/non)oui
avertissement : '172.18.6.227' (rsa) ajouté en permanence ? à la liste des hôtes connus.
Mot de passe de root@172.18.6.227 :
dernière connexion : jeu. 12 juillet 18:47:47 2007 à partir de 172.18.6.130
[root@qmail ~]#

Après la première connexion À ce moment-là, ssh stockera l'empreinte digitale ssh connectée dans le fichier know_hosts dans le répertoire .ssh du répertoire personnel de l'utilisateur. Si le système distant a réinstallé le système et que l'empreinte digitale ssh a changé, vous devez supprimer l'empreinte digitale correspondante dans le répertoire. fichier Know_hosts dans le répertoire .ssh. Connectez-vous à nouveau et répondez oui avant de pouvoir vous connecter. Veuillez noter que le répertoire .ssh est un répertoire caché commençant par "." et nécessite le paramètre ls –a pour le voir. De plus, les autorisations de ce répertoire doivent être de 700 et le répertoire personnel de l'utilisateur ne peut pas accorder d'autorisations d'écriture aux autres utilisateurs, sinon le serveur ssh refusera de se connecter. Si vous ne parvenez pas à vous connecter, veuillez vérifier le fichier journal /var/log/secure sur le serveur. La raison pour laquelle vous ne parvenez pas à vous connecter peut généralement être trouvée rapidement.

commande d'exécution à distance ssh :

[root@mail ~]# ssh 172.18.6.227 ls -l /
root@172.18.6.227's password:
total 1244
drwxr-xr-x 2 root root 4096 jun 26 04:02 bin
drwxr-xr-x 4 root root 4096 29 mars 11:17 boot
drwxr-xr-x 2 root root 4096 25 janvier 11:26 commande
drwxr-xr-x 15 root root 4096 12 juin 20 :09 data
drwxr-xr-x 9 root root 5360 2 juil 13:38 dev
drwxr-xr-x 87 root root 12288 11 juil ​​04:02 etc
drwxr-xr-x 20 root root 4096 10 avril 10 :5 4 home
drwxr-xr-x 2 root root 4096 13 août 2004 initrd

Après avoir entré le mot de passe correct, ssh établira un lien vers le programme serveur sshd du serveur distant, puis exécutera la commande
ls –l / sur le serveur distant et saisissez les résultats transmis au serveur local. Cela équivaut à se connecter d'abord au serveur distant, puis à exécuter la commande ls –l / et enfin à se déconnecter du serveur. Il convient de rappeler que si vous devez vous connecter au serveur et exécuter plus d'une commande, vous devez mettre la commande entre guillemets simples ou doubles :

ssh 172.18.6.227 « cd /root && ls «

ssh's remote commande d'exécution La fonction est utilisée pour remplacer les commandes originales de la série r Avant l'émergence de ssh, les administrateurs système devaient utiliser des outils de commande d'exécution à distance dangereux tels que rexec et rsh pour effectuer la même opération. Cette fonction est très utile lors de la gestion d'un grand nombre de machines. Par exemple, si je souhaite redémarrer tous les serveurs du segment réseau 10.0.0.0/24, il me suffit de saisir une commande :

for i in $(seq 1 254); do ssh 10.0.0.${i} reboot ; done

peut terminer l'opération de redémarrage de tous les serveurs, vous direz peut-être que même si vous n'avez plus besoin de vous connecter à chaque serveur, vous devez toujours saisir le mot de passe à chaque fois, ce qui est très gênant. Ne vous inquiétez pas, ce dont je vais parler ci-dessous est d'utiliser la méthode de clé publique ssh pour vous connecter afin de résoudre le problème.

Utilisez la clé publique pour vous connecter :

La commande ssh-keygen de openssh est utilisée pour générer de telles clés privées et publiques.

[root@mail ~]# ssh-keygen -b 1024 -t dsa -c gucuiwen@myserver.com
génération d'une paire de clés DSA publique/privée.
#L'invite est générée Si vous sélectionnez la longueur 4096, cela peut être. cela prend beaucoup de temps
entrez le fichier dans lequel enregistrer la clé (/root/.ssh/id_dsa) :
#Demandez où mettre les clés publiques et privées, appuyez sur Entrée pour utiliser l'emplacement par défaut
entrez la phrase secrète (vide s'il n'y a pas de phrase secrète ):
# Demandez à saisir la phrase secrète de la clé privée. Afin d'obtenir une connexion automatique, vous ne devez pas saisir la phrase secrète directement.
Entrez à nouveau la même phrase secrète :
# Invitez à saisir à nouveau la phrase secrète et appuyez à nouveau sur Entrée
Votre identification. a été enregistré dans /root/.ssh/id_dsa
votre clé publique a été enregistrée dans /root/.ssh/id_dsa.pub.
# Invite indiquant que la clé publique et la clé privée ont été stockées dans /root/.ssh. / répertoire
l'empreinte digitale de la clé est :
71:e5:cb: 15:d3:8c:05:ed:05:84:85:32:ce:b1:31:ce gucuiwen@myserver.com
# Empreinte digitale de la clé

Instructions :
-b 1024 Utilisez une longueur de 1024 octets. La paire clé publique/clé privée peut aller jusqu'à 4096 octets, généralement 1024 ou 2048 suffisent. Si elle est trop longue, le cryptage et le déchiffrement prendront beaucoup de temps.
-t dsa  Une paire clé publique/clé privée utilisant la méthode de cryptage dsa. En plus de dsa, il existe également la méthode rsa. La longueur minimale de la méthode rsa ne peut pas être inférieure à 768 octets.
-c gucuiwen@myserver.com Un commentaire et une description de cette paire clé publique/clé privée, généralement remplacés par l'email du propriétaire. Vous pouvez l'omettre. Pour plus d'autres paramètres, veuillez utiliser ssh-keygen.

[root@mail ~]# ls -l /root/.ssh
total 16
-rw——- 1 racine racine 668 12 juil 20:07 id_dsa
-rw-r–r– 1 racine racine 611 12 juil. 20:07 id_dsa.pub
-rw-r–r– 1 root root 222 juil 12 19:37 Les fichiers de clés publiques/privées générés par known_hosts

se trouvent dans le répertoire .ssh du répertoire personnel de l'utilisateur, où id_dsa.pub est le fichier de clé publique. key, téléchargez la clé publique générée dans le répertoire .ssh du répertoire personnel correspondant au répertoire utilisateur du serveur à connecter. Encore une fois, il est souligné que le propre répertoire de l'utilisateur (répertoire personnel) ne doit pas avoir d'autorisations d'écriture par d'autres personnes. Le répertoire .ssh Les autorisations doivent être de 700, c'est-à-dire que personne d'autre que l'utilisateur lui-même n'a l'autorisation de lire, d'écrire ou d'afficher le répertoire, sinon le serveur ssh refusera de se connecter. . Le fichier de clé publique par défaut de ssh est le fichier approved_keys dans le répertoire .ssh du répertoire personnel de l'utilisateur. Par conséquent, la clé publique générée doit être placée dans le répertoire /root/.ssh/ du serveur sous ce nom de fichier Multiple. Les fichiers peuvent être stockés dans ce fichier. Le fichier de clé publique d'un client est comme une porte qui peut avoir plusieurs serrures, et différentes clés peuvent être utilisées pour essayer d'ouvrir la serrure. Tant qu'une serrure est ouverte, la porte peut être ouverte. Elle devrait ressembler à ceci une fois placée sur le serveur :

La clé privée doit avoir 600 autorisations, sinon le serveur ssh refusera à l'utilisateur de se connecter.

Voici à peu près à quoi cela ressemble. Parlons maintenant de la configuration de /etc/ssh/ssh_config et /etc/ssh/sshd_config.

/etc/ssh/ssh_config:


host *
L'option "host" n'est valable que pour les ordinateurs pouvant correspondre à la chaîne suivante. "*" indique tous les ordinateurs.

forwardagent no
"forwardagent" définit si la connexion est transmise à l'ordinateur distant via un agent d'authentification (s'il en existe un).

forwardx11 no
"forwardx11" définit si les connexions x11 sont automatiquement redirigées vers des canaux sécurisés et des ensembles d'affichage.

rhostsauthentication no
"rhostsauthentication" définit s'il faut utiliser la vérification de sécurité basée sur rhosts.

rhostsrsaauthentication no
"rhostsrsaauthentication" définit s'il faut utiliser l'authentification de sécurité basée sur rhosts à l'aide de l'algorithme rsa.

rsaauthentication yes
"rsaauthentication" définit s'il faut utiliser l'algorithme rsa pour la vérification de sécurité.

passwordauthentication yes
"passwordauthentication" définit s'il faut utiliser l'authentification par mot de passe.

fallbacktorsh no
"fallbacktorsh" définit s'il faut utiliser automatiquement rsh si une erreur se produit lors de la connexion avec ssh.

usersh no
"usersh" définit s'il faut utiliser "rlogin/rsh" sur cet ordinateur.

batchmode no
Si «batchmode» est défini sur «oui», l'invite de phrase secrète/mot de passe (saisie interactive du mot de passe) sera désactivée. Cette option est utile pour les fichiers de script et les tâches par lots lorsque la saisie interactive du mot de passe n'est pas possible.

checkhostip yes
"checkhostip" définit si ssh examine l'adresse IP de l'hôte connecté au serveur pour empêcher l'usurpation d'identité DNS. Il est recommandé de le définir sur « oui ».

stricthostkeychecking no
Si "stricthostkeychecking" est défini sur "yes", ssh n'ajoutera pas automatiquement la clé de l'ordinateur au fichier "$home/.ssh/known_hosts", et une fois la clé de l'ordinateur modifiée, la connexion sera refusée.

identityfile ~/.ssh/identity
"identityfile" définit le fichier à partir duquel lire l'identification de vérification de sécurité rsa de l'utilisateur.

port 22
"port" définit le port pour se connecter à l'hôte distant.

cipher Blowfish
"cipher" définit le mot de passe pour le cryptage.

escapechar ~
"escapechar" définit le caractère d'échappement.

/etc/ssh/sshd_config:


port 22
"port" définit le numéro de port pour l'écoute sshd.

listenaddress 192.168.1.1
"listenaddress" définit l'adresse IP liée au serveur sshd.

hostkey /etc/ssh/ssh_host_key

Le paramètre "hostkey" contient le fichier contenant la clé privée de l'ordinateur.

serverkeybits 1024
"serverkeybits" définit le nombre de bits dans la clé du serveur.

loggingracetime 600
"loggingracetime" définit le temps (en secondes) pendant lequel le serveur doit attendre avant de couper la connexion si l'utilisateur ne parvient pas à se connecter.

keyregenerationinterval 3600
"keyregenerationinterval" définit le nombre de secondes après lequel la clé du serveur est automatiquement régénérée (si une clé est utilisée). La clé est régénérée pour empêcher que les informations interceptées ne soient déchiffrées avec une clé volée.

permitrootlogin no
"permitrootlogin" définit si root peut se connecter en utilisant ssh. Cette option ne doit pas être définie sur « oui ».

ignorerhosts yes
"ignorerhosts" définit s'il faut utiliser les fichiers "rhosts" et "shosts" lors de la vérification.

ignoreuserknownhosts yes
"ignoreuserknownhosts" définit si le démon ssh ignore le "$home/.ssh/known_hosts" de l'utilisateur lors de la vérification de sécurité de l'authentification rhostsrs

strictmodes yes
"strictmodes" définit si ssh vérifie la maison de l'utilisateur avant de recevoir une demande de connexion Autorisations et propriété des répertoires et des fichiers rhosts. Cela est souvent nécessaire car les débutants configurent souvent leurs répertoires et fichiers de manière à ce que tout le monde ait un accès en écriture.

x11forwarding no
"x11forwarding" définit s'il faut autoriser le transfert x11.

printmotd yes
"printmotd" définit à sshd s'il doit afficher les informations dans "/etc/motd" lorsque l'utilisateur se connecte.

syslogfacility auth
"syslogfacility" définit s'il faut donner le "code d'installation" lors de la journalisation des messages depuis sshd.

loglevel info
"loglevel" définit le niveau auquel les messages du journal sshd sont enregistrés. info est un bon choix. Consultez la page de manuel sshd pour plus d'informations.

rhostsauthentication no
Le paramètre "rhostsauthentication" est-il suffisant pour utiliser uniquement rhosts ou "/etc/hosts.equiv" pour la vérification de sécurité.

rhostsrsaauthentication no
"rhostsrsa" paramètre s'il faut autoriser la vérification de sécurité à l'aide de rhosts ou "/etc/hosts.equiv" plus rsa.

rsaauthentication oui
Le paramètre "rsaauthentication" autorise uniquement l'authentification de sécurité rsa.

authentification par mot de passe oui
"authentification par mot de passe" définit s'il faut autoriser la vérification du mot de passe.

permitemptypasswords no
"permitemptypasswords" définit s'il faut autoriser la connexion avec un compte avec un mot de passe vide.

allowusers admin
"allowusers" peut être suivi de n'importe quel nombre de chaînes correspondant au nom d'utilisateur (modèles) ou de chaînes correspondantes telles que user@host. Ces chaînes sont séparées par des espaces. Le nom d'hôte peut être un nom DNS ou une adresse IP.

Convertir la clé publique au format compatible ssh2 en format compatible openssh

ssh-keygen -i -f Identity.pub >>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer