SSH-ProtokollBevor wir über die Anmeldung mit öffentlichem Schlüssel sprechen, sprechen wir über das SSH-Protokoll. SSH ist ein Netzwerkprotokoll. Wenn wir ssh sagen, meinen wir normalerweise seine Implementierung, nämlich OpenSSH. In der Shell ist es der ssh-Befehl. SSHSecure Shell (SSH) ist ein verschlüsseltes Netzwerkübertragungsprotokoll, das eine sichere Übertragungsumgebung für Netzwerkdienste in einem unsicheren Netzwerk bereitstellen kann. SSH erstellt einen sicheren Tunnel im Netzwerk, um den SSH-Client und den Server zu verbinden. Das Prinzip von SSH ähnelt dem von HTTPS. Beide sind Anwendungsschichtprotokolle, die auf TCP und asymmetrischer Verschlüsselung basieren. Der Unterschied zu HTTPS besteht darin, dass HTTPS digitale Zertifikate und digitale Zertifikatauthentifizierungszentren verwendet, um Man-in-the-Middle-Angriffe zu verhindern, während der öffentliche Schlüssel des SSH-Servers nicht notariell beglaubigt ist und seine Identität nur manuell über seinen öffentlichen Schlüssel-Fingerabdruck ermittelt werden kann. Wie in der folgenden Abbildung gezeigt, werden wir bei der ersten Anmeldung per SSH bei einem Server von SSH aufgefordert, den Fingerabdruck des öffentlichen Schlüssels des Servers zu überprüfen. Wenn wir überprüfen, dass dieser öffentliche Schlüsselfingerabdruck der Server ist, bei dem wir uns anmelden möchten, wird der öffentliche Schlüssel des Servers zu ~/.ssh/known_hosts hinzugefügt. Bei der erneuten Anmeldung überspringt ssh die Phase der Überprüfung des öffentlichen Schlüssels, nachdem festgestellt wurde, dass es sich um einen authentifizierten Server handelt. VerbindungsprozessDas Konzept der Kommunikationsverschlüsselung habe ich auch in meinem vorherigen Artikel vorgestellt, siehe: Lassen Sie uns noch einmal über Verschlüsselung sprechen – die asymmetrische RSA-Verschlüsselung verstehen und verwenden. Informationen zum Verbindungsprozess des SSH-Protokolls finden Sie unter: Protokollgrundlagen: Secure Shell-Protokoll. Zusammenfassend sind im Wesentlichen die folgenden Schritte enthalten:
Ich habe tcpdump + wireshark verwendet, um Pakete zu erfassen und den SSH-Verbindungsprozess zu überprüfen, wie in der folgenden Abbildung gezeigt: Ich muss erneut seufzen, dass tcpdump + Wireshark ein echtes Tool zum Erlernen von Netzwerkprotokollen ist. SSH-WerkzeugsshAls Tool ist ssh in Server und Client unterteilt. Auf der Serverseite ist es sshd, das im Allgemeinen Port 22 belegt. Wir verwenden normalerweise den Client. Die allgemeine Verwendung lautet „ssh user@host“. Anschließend geben wir gemäß der SSH-Eingabeaufforderung das Kennwort ein und melden uns beim Server an. Seine Funktionen sind sehr leistungsstark, wie Sie an den unterstützten Parametern erkennen können.
Nachdem wir das SSH-Protokoll und den SSH-Befehl vorgestellt haben, sprechen wir abschließend über die Anmeldung mit öffentlichem Schlüssel. Anmeldung mit öffentlichem SchlüsselSobald Sie die Prinzipien der asymmetrischen Verschlüsselung verstanden haben, ist die Anmeldung mit einem öffentlichen Schlüssel sehr einfach. Da der öffentliche und der private Schlüssel ein eindeutiges Paar sind, kann der Server die Authentizität des Clients vollständig über den öffentlichen Schlüssel feststellen, solange der Client die Sicherheit seines eigenen privaten Schlüssels gewährleistet. Um die Anmeldung mit öffentlichem Schlüssel zu implementieren, müssen wir daher zunächst ein öffentliches und ein privates Schlüsselpaar generieren. Generieren Sie ein Schlüsselpaar mit dem Befehl ssh-keygen. Um die Schritte vollständiger zu machen, speichere ich sie vorübergehend im Arbeitsverzeichnis. Standardmäßig werden sie im Verzeichnis ~/.ssh gespeichert.
Fügen Sie den Inhalt der privaten Schlüsseldatei ./test in die Datei ~/.ssh/id_rsa des Clients ein, versuchen Sie dann, sich mit dem Kennwort beim Server anzumelden, und fügen Sie den Inhalt der öffentlichen Schlüsseldatei ./test.pub in die Datei ~/.ssh/authorized_keys des Servers ein. Bei der nächsten Anmeldung verwendet ssh automatisch Ihren eigenen privaten Schlüssel zur Authentifizierung, sodass die Eingabe eines Kennworts nicht erforderlich ist. Batch-OperationenDurch die Anmeldung mit einem öffentlichen Schlüssel müssen wir bei jeder Anmeldung am Server nicht mehr jedes Mal ein Passwort eingeben. Außerdem wird das Problem der synchronen Blockierung jeder Anmeldesitzung gelöst, sodass wir die Befehlsmethode „ssh user@host“ von ssh verwenden können, um Befehle direkt auf dem Server auszuführen. Gleichzeitig ist es, wenn wir über eine IP-Liste verfügen, möglich, eine For-Schleife zu verwenden, um die IP-Liste zu durchlaufen und Befehle stapelweise auf mehreren Servern auszuführen. Zusammenführen von Dateien auf mehreren ServernVor ein paar Tagen habe ich einem Kollegen geholfen, auf mehreren Servern nach Protokollen zu suchen. Ich musste die auf mehreren Servern gefundenen Protokolle für die statistische Analyse auf derselben Maschine zusammenfassen. Ich verwende pssh, um mich bei mehreren Servern anzumelden. Da das Protokollvolumen zu groß ist, ist es nicht praktikabel, die Ergebnisse auf dem Terminal auszugeben und dann zu kopieren. Wenn eine Umleitung verwendet wird, werden die Ergebnisse an jeden Server umgeleitet. scpDerzeit können Sie scp verwenden. scp und ssh sind Befehle aus derselben Familie und ebenfalls sichere Übertragungsprotokolle, die auf Grundlage des SSH-Protokolls implementiert sind. Solange die öffentlichen Schlüssel jedes Servers aufbewahrt werden, ist ein kennwortfreier Betrieb wie mit dem SSH-Befehl möglich. Eine häufige Verwendung von scp ist scp src dst, wobei der Remote-Pfad als Benutzer@Host:/Pfad ausgedrückt werden kann. Bei der Stapelanmeldung können Sie Befehle wie grep verwenden, um die Ergebnisdateien zunächst in eine Datei einzugeben, und sie dann mit dem Befehl scp auf denselben Server kopieren. Um Dateinamenskonflikte zwischen Servern zu vermeiden, können Sie uuidgen | xargs -I {} scp result.log root@ip:/result/{} verwenden, um die Ergebnisse jedes Servers in verschiedene Dateien zu kopieren und dann cat verwenden, um die Dateien im Ergebnisordner zu einer einzigen zusammenzuführen. keineNatürlich speichern unsere Server in den meisten Fällen nicht die öffentlichen Schlüssel des jeweils anderen, aber der Befehl nc kann dieses Problem perfekt lösen. Die Option -k von nc ermöglicht es dem nc-Server, die Verbindung nach Abschluss der Dateiübertragung offen zu halten. Auf diese Weise verwenden wir nc -k -4l port > result.log, um einen NC-Server zu starten, und verwenden dann grep xxx info.log | nc ip port, um die Ergebnisdaten zusammenzuführen. ZusammenfassungDie verschiedenen in diesem Artikel vorgestellten Tools befinden sich noch in der Entwicklungsphase. Es ist immer gut, mehr Tools zu kennen. Wenn Sie Betriebs- und Wartungsarbeiten durchführen, müssen Sie sich weiterhin auf die OPS-Plattform verlassen, um mehr Funktionen zu integrieren und eine vollständige Automatisierung zu erreichen. Oben finden Sie Einzelheiten zur Verwendung der Shell zum Ausführen von Batch-Operationen auf mehreren Servern. Weitere Informationen zur Verwendung der Shell zum Ausführen von Batch-Operationen auf mehreren Servern finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Detaillierte grafische Erklärung zur Verwendung von SVG im Vue3+Vite-Projekt
>>: Verwenden Sie Bilder, um eine personalisierte Unterstreichung von Hyperlinks zu realisieren
Dieser Artikel erläutert anhand von Beispielen di...
Ubuntu16.04: Pip installieren und deinstallieren ...
In diesem Artikel wird anhand eines Beispiels bes...
Sollte dieser Artikel Fehler enthalten oder du An...
Ich habe es gerade auf IE6 ausprobiert und die Sym...
In diesem Artikelbeispiel wird der spezifische Co...
Dieser Artikel beschreibt, wie mysql5.6 mithilfe ...
Inhaltsverzeichnis Vorwort 1. Laden Sie MySQL von...
Überwachungsmethode in Vue betrachten Beachten Na...
Inhaltsverzeichnis 1. innodb_buffer_pool_size 2. ...
Dieser Artikel veranschaulicht anhand von Beispie...
Inhaltsverzeichnis Erster Blick Erstellen einer V...
Das Bild-Tag wird verwendet, um ein Bild auf eine...
Vorwort Ab MySQL 5.7.11 unterstützt MySQL die Dat...
Inhaltsverzeichnis Vorwort 1. Anwendungskomponent...