Maison  >  Article  >  Opération et maintenance  >  Comment utiliser la commande ssh pour compter les informations de cluster distribué dans Linux Shell

Comment utiliser la commande ssh pour compter les informations de cluster distribué dans Linux Shell

WBOY
WBOYavant
2023-05-11 15:52:06861parcourir

1. L'idée de compter les informations sur les clusters distribués

Utilisez des commandes de connexion à distance sans mot de passe pour permettre à une machine d'accéder aux machines d'autres clusters. Par conséquent, il y a plusieurs étapes importantes à réaliser :

  • Apprenez à utiliser chut

  • Obtenez une connexion sans mot de passe

  • Écrivez un programme shell

Deuxièmement, le principe de cryptage SSH

Technologie de cryptage asymétrique est une méthode de cryptage qui utilise différentes clés pour le cryptage et le déchiffrement. Parmi eux, RSA et DSA sont des méthodes de chiffrement asymétriques. Bien entendu, l'algorithme de chiffrement asymétrique a un principe, c'est-à-dire qu'il existe une paire de clés qui peuvent se chiffrer et se déchiffrer. Habituellement, cette paire de clés deviendra la clé publique et la clé privée du titulaire. La clé publique est une clé que d'autres peuvent connaître, tandis que la clé privée ne peut être connue que par son détenteur. Bien entendu, si la clé privée est divulguée à des tiers, des problèmes de sécurité des informations peuvent survenir.

Supposons : A souhaite envoyer des données cryptées à B. La première méthode est la suivante : A utilise sa propre clé privée pour chiffrer, et B utilise la clé publique de A pour déchiffrer les données après les avoir obtenues. La deuxième méthode est la suivante : A utilise la clé publique de B pour chiffrer les données, et B utilise sa propre clé privée pour déchiffrer les données après les avoir obtenues.

La connexion à distance SSH utilise la première méthode.

3. Commande SSH

La méthode couramment utilisée est

ssh -i [nom du fichier de clé privée] -p [numéro de port] utilisateur@nom d'hôte [commande exécutée]

Le nom du fichier de clé privée est par défaut $HOME /.ssh/id_rsa ou $HOME/.ssh/id_dsa, le numéro de port par défaut est 22.

Par exemple :

ssh   myname@128.180.146.89  #输入目标主机的密码后进行远程操作,exit命令退出

Quatrièmement, utilisez ssh-keygen et ssh-copy-id pour obtenir une connexion sans mot de passe

ssh-keygen     #直接全部回车,先都默认

Ensuite, ce sera dans $ Un fichier de paire de clés est généré dans le répertoire HOME/.ssh/, dans lequel *.pub est unifié en un fichier de clé publique et l'autre est un fichier de clé privée.

Ensuite, copiez le contenu du fichier de clé publique dans $HOME/.ssh/authorized_keys de l'utilisateur hôte cible. La méthode de copie peut être utilisée manuellement par vous-même. Vous pouvez également utiliser la commande suivante pour obtenir

ssh-copy-id -i [nom du fichier de clé publique] user$hostname

Par exemple :

ssh-copy-id -i  $HOME/.ssh/id_rsa.pub  myname@128.180.146.89

Exécutez ensuite la commande de connexion à distance pour obtenir une connexion sans mot de passe. Si un mot de passe est toujours requis pour la deuxième connexion, cela peut être dû à des problèmes d'autorisation de fichiers et de répertoires de fichiers. Cela peut aussi être dû au fait que la clé privée et la clé publique de la connexion ne forment pas une paire.

5. Implémentation du script Linux Shell

Fichier sshtest.sh :

#!/bin/bash
func___setenv(){
   RTS_ECT_DIR="$HOME"
   #.....
}
######################################
#
#   程序主体
######################################
 
#调用环境变量
func___setenv
 
#读取机器连接信息
while read line
do
ssh_cmd=
ssh_linkhost=`echo ${line}`
    while  read  cmdline
    do
    #空命令行跳过
    if [ -z "$cmdline" ]; then
        continue 
    fi
    
    #读取的命令行拼接;
    if [ ! -n "$ssh_cmd" ]; then
        ssh_cmd=`echo ${$cmdline}` ;
    else
        ssh_cmd="${ssh_cmd};"`echo ${$cmdline}` ;
    fi
    done <${RTS_ECT_DIR}/sshcmd.cfg
#执行远程命令
ssh $ssh_linkhost $ssh_cmd </dev/null
done <${RTS_ECT_DIR}/sshlink.cfg

Fichier sshlink.cfg : Vous devez d'abord configurer la clé avant de pouvoir vous connecter sans mot de passe

myname@128.180.146.89
myName@128.180.146.90
Myname@128.180.146.91

Fichier sshcmd.cfg : à remplir en fonction de votre propres besoins

ps -ef|grep java 
df -h

6. Le problème de ssh qui ne boucle qu'une seule fois

Si l'avant-dernière ligne du code ci-dessus est remplacée par

ssh $ssh_linkhost $ssh_cmd

, alors la boucle while ne bouclera qu'une seule fois. Parce que la ligne while read placera les informations de boucle dans l'entrée standard et que la commande ssh lira tout le tampon d'entrée, donc while n'est pas dans la boucle. La commande ssh doit donc être redirigée

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