Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >So verwenden Sie den Befehl ssh, um verteilte Clusterinformationen in der Linux-Shell zu zählen

So verwenden Sie den Befehl ssh, um verteilte Clusterinformationen in der Linux-Shell zu zählen

WBOY
WBOYnach vorne
2023-05-11 15:52:06940Durchsuche

1. Die Idee, verteilte Clusterinformationen zu zählen

Verwenden Sie passwortfreie Remote-Anmeldebefehle, um einer Maschine den Zugriff auf Maschinen in anderen Clustern zu ermöglichen. Daher sind mehrere wichtige Schritte zu erreichen:

  • Erfahren Sie, wie man shh verwendet.

  • Erreichen Sie eine passwortfreie Anmeldung.

  • Schreiben Sie ein Shell-Programm Eine Verschlüsselungsmethode, die unterschiedliche Schlüssel zur Ver- und Entschlüsselung verwendet. Darunter sind RSA und DSA asymmetrische Verschlüsselungsmethoden. Natürlich hat der asymmetrische Verschlüsselungsalgorithmus eine Prämisse, das heißt, es gibt ein Schlüsselpaar, das sich gegenseitig verschlüsseln und entschlüsseln kann. Normalerweise wird dieses Schlüsselpaar zum öffentlichen Schlüssel und zum privaten Schlüssel des Inhabers. Der öffentliche Schlüssel ist ein Schlüssel, den andere kennen können, während der private Schlüssel nur dem Inhaber bekannt sein kann. Wenn der private Schlüssel an Außenstehende weitergegeben wird, kann es natürlich zu Problemen mit der Informationssicherheit kommen.

  • Angenommen: A möchte verschlüsselte Daten an B senden. Die erste Methode ist: A verwendet seinen eigenen privaten Schlüssel zum Verschlüsseln und B verwendet den öffentlichen Schlüssel von A zum Entschlüsseln, nachdem er die Daten erhalten hat. Die zweite Methode ist: A verwendet den öffentlichen Schlüssel von B, um die Daten zu verschlüsseln, und B verwendet seinen eigenen privaten Schlüssel, um die Daten zu entschlüsseln, nachdem er sie erhalten hat.

SSH-Remote-Login verwendet die erste Methode.

3. SSH-Befehl

Die häufig verwendete Methode ist

ssh -i [Name der privaten Schlüsseldatei] -p [Portnummer] Benutzer@Hostname [ausgeführter Befehl]

Der Standardname der privaten Schlüsseldatei ist $HOME /.ssh/id_rsa oder $HOME/.ssh/id_dsa, die Portnummer ist standardmäßig 22.

Zum Beispiel:

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

4. Verwenden Sie ssh-keygen und ssh-copy-id, um eine passwortfreie Anmeldung zu erreichen
ssh-keygen     #直接全部回车,先都默认

Dann wird es in $ Im Verzeichnis HOME/.ssh/ wird eine Schlüsselpaardatei generiert, in der *.pub zu einer öffentlichen Schlüsseldatei und die andere zu einer privaten Schlüsseldatei zusammengefasst wird.

Kopieren Sie als Nächstes den Inhalt der öffentlichen Schlüsseldatei nach $HOME/.ssh/authorized_keys des Zielhostbenutzers. Die Kopiermethode kann manuell von Ihnen selbst durchgeführt werden. Sie können auch den folgenden Befehl verwenden, um Folgendes zu erreichen:

ssh-copy-id -i [Name der öffentlichen Schlüsseldatei] Benutzer$Hostname

Zum Beispiel:

ssh-copy-id -i  $HOME/.ssh/id_rsa.pub  myname@128.180.146.89
Führen Sie dann den Remote-Anmeldebefehl aus, um eine passwortfreie Anmeldung zu erreichen. Wenn für die zweite Anmeldung immer noch ein Passwort erforderlich ist, kann dies an Problemen mit der Datei- und Dateiverzeichnisberechtigung liegen. Es kann auch daran liegen, dass der verbundene private Schlüssel und der öffentliche Schlüssel kein Paar sind.

5. Linux Shell Script Implementation

sshtest.sh-Datei:

#!/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

sshlink.cfg-Datei: Sie müssen zuerst den Schlüssel konfigurieren, bevor Sie sich ohne Passwort anmelden können.

myname@128.180.146.89
myName@128.180.146.90
Myname@128.180.146.91

sshcmd.cfg-Datei: Füllen Sie ihn entsprechend aus eigene Bedürfnisse

ps -ef|grep java 
df -h

6. Das Problem, dass ssh nur einmal eine Schleife durchführt

Wenn die vorletzte Zeile des obigen Codes in

ssh $ssh_linkhost $ssh_cmd

geändert wird, wird die while-Schleife nur einmal durchlaufen. Denn while read line fügt die Schleifeninformationen in die Standardeingabe ein und der SSH-Befehl liest den gesamten Eingabepuffer, sodass while nicht in der Schleife ist. Daher muss der SSH-Befehl umgeleitet werden

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Befehl ssh, um verteilte Clusterinformationen in der Linux-Shell zu zählen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen