


Detaillierte Erläuterung der Shell zur Implementierung der automatischen SSH-Anmeldung
Vorwort
Das Unternehmen entwickelt und verwendet docker
. Geben Sie bei jedem Login immer ssh user_name@ip_string
ein an Ihre Entwicklungsmaschine und bestätigen Sie dann die Eingabe password
. Wenn Sie schnell sind, machen Sie oft Fehler. Als fauler Mensch muss ich einen Trick finden. Da er eine verschlüsselte Interaktion mit dem Server erfordert, gibt es keine Möglichkeit, sich direkt mit einem Passwort anzumelden, also musste ich aufgeben. ssh
eingegeben hatte, und zwar erfolgreich Eingeloggt. Ich war sehr überrascht, als ich die Maschine entwickelte, also kam ich zurück, um sie zu suchen und zu studieren, und schrieb schließlich diesen Artikel. ./test.sh
Grundlagen von Shell-Skripten
Bevor wir das automatische SSH-Anmeldeskript schreiben, sprechen wir über die Grundlagen von Shell-Skripten, es ist keine Grammatik oder so etwas Überall im Internet. Hier ist eine Zusammenfassung des Funktionsmechanismus des Shell-Skripts Es geht darum, zunächst das Skript auszuführen, das ursprünglich zehn Minuten in Anspruch nahm, die Fertigstellung jedoch zwei Stunden dauerte. Gleichzeitig ermöglicht es uns auch, die Shell auszuführen und zu erfahren, warum.Über den Dateinamen ausführen
Shell-Skript kann direkt über den Dateinamen ausgeführt werden. Es ist zu beachten, dass für die Datei eine Ausführungsberechtigung erforderlich ist. Verwenden Sie, um der Datei Ausführungsberechtigungen hinzuzufügen.
geben Sie den Skriptinterpreter an, der die Datei ausführen soll.
Das häufig verwendete sudo chmod +x ./file_name.sh
h dient zur Angabe des Skripts Interpreter
usw. Wir können den Befehl verwenden, um die aktuell verfügbaren Skriptinterpreter anzuzeigen. Dateiname Oder verwenden Sie den Quellbefehl, um das Skript auszuführen
Diese Methode forkt keinen Unterprozess zur Ausführung des Skripts wie die ersten beiden Methoden auf, sondern verwendet die aktuelle Shell-Umgebung, um es für .bashrc auszuführen oder .bash_profile geändert werden, müssen wir die Shell nicht neu starten oder uns erneut beim System anmelden, damit die aktuellen Änderungen wirksam werden. sh file_name.s
/bin/sh
/bin/bash
Shebangls -l /bin/*sh
Wenn wir ein Shell-Skript schreiben, fügen wir am Anfang immer eine Zeile #!/binbash hinzu, die der Grund dafür ist Es heißt so. Es ist ein seltsamer Name. Dennis Ritchie, der Entwickler der C-Sprache und von Unix, sagte, es könnte sich um einen beschreibenden Text im britischen Stil handeln, der „Hash-Bang“ ähnelt. Hat eine Erklärung im Wiki gepostet:
In der Informatik ist ein Shebang eine Zeichenfolge, die aus einem Nummernzeichen und einem Ausrufezeichen besteht, die als die ersten beiden Zeichen der ersten Zeile einer Textdatei erscheinen. Wenn in der Datei ein Shebang vorhanden ist, analysiert der Programmlader des Unix-ähnlichen Betriebssystems den Inhalt nach dem Shebang, verwendet diesen Inhalt als Interpreteranweisungen, ruft die Anweisung auf und verwendet den Dateipfad, der den Shebang enthält, als Interpreterparameter.Einfach ausgedrückt gibt es den Interpreter an, wenn dieses Skript ausgeführt wird. Wenn Sie also den Dateinamen zum direkten Ausführen des Shell-Skripts verwenden, können wir ihn auch anhängen direkt nach der Shebang-Option verwenden wir die Option standardmäßig bei der Ausführung;
Der Shebang von test.sh lautet beispielsweise #!/bin/sh -x, und wenn wir das Skript ausführen:
./test.sh hello
ist äquivalent zu:
bin/sh -x ./test.sh hello;
Um ein automatisches SSH-Anmeldeskript zu schreiben, ist der benötigte Shebang (Interpreter) /usr/bin/expect;Das sollte bei der Angabe beachtet werden Der Skriptinterpreter zum Ausführen des Skripts wird vom angegebenen Skriptinterpreter überschrieben, das heißt, der angegebene Skriptinterpreter wird zuerst zum Ausführen des Skripts verwendet (ich verwende normalerweise sh ./test.sh, aber der Eingabeaufforderungsbefehl wurde nicht gefunden).expect-Erklärung
expect ist ein Interpreter, der automatische und interaktive Aufgaben realisieren kann. Er kann auch gängige Shell-Syntaxbefehle interpretieren:
Spawn-Befehl:Der Spawn-Befehl verzweigt einen untergeordneten Prozess, um den Befehlsbefehl auszuführen, und führt dann nachfolgende Befehle in diesem untergeordneten Prozess aus Im automatischen SSH-Anmeldeskript verwenden wir spawn ssh user_name@ip_str und forken einen untergeordneten Prozess, um den SSH-Anmeldebefehl
Expect-Befehl auszuführen:Expect-Befehl ist Der Schlüsselbefehl des Expect-Interpreters und seine allgemeine Verwendung ist „expect“ (Zeichenfolge). Wenn Sie also erwarten, eine Zeichenfolge zu erhalten, können Sie in der Zeichenfolge „string“ Platzhalter wie * verwenden Die Zeichenfolge entspricht den von der Befehlszeile zurückgegebenen Informationen. Es wird erwartet, dass das Skript sofort ausgeführt wird.
Befehl „set timeout“: Erwarten Sie den Befehl auf n Sekunden und der Erwartungswert wurde nicht innerhalb von n Sekunden erreicht. Wenn der Erwartungswert falsch ist, wird das Skript weiterhin ausgeführt:Die allgemeine Verwendung des Sendebefehls ist „Sendezeichenfolge“. Dies ist unsere übliche Eingabe einer Information in die Befehlszeile, genau wie bei der Eingabe eines Befehls. Vergessen Sie natürlich nicht, nach der Zeichenfolge ein „r“ hinzuzufügen, um dies anzuzeigen Geben Sie den Befehl
ein:
interact命令很简单,执行到此命令时,脚本fork的子进程会将操作权交给用户,允许用户与当前shell进行交互;
完成脚本
以下是一个完成版的脚本 test.sh:
#!/usr/bin/expect // 指定shebang set timeout 3 // 设定超时时间为3秒 spawn ssh user_name@172.***.***.*** // fork一个子进程执行ssh命令 expect "*password*" // 期待匹配到 'user_name@ip_string's password:' send "my_password\r" // 向命令行输入密码并回车 send "sudo -s\r" send "cd /data/logs\r" // 帮我切换到常用的工作目录 interact // 允许用户与命令行交互
执行 sudo chmod +x ./test.sh
命令给shell脚本添加执行权限;
运行 ./test.sh
命令,一键登陆成功!
简单的几个命令,,搭配起来解决了与命令行的交互问题后,很多复杂的功能也不在话下了~
alias别名
脚本完成了,可是还是有些小瑕疵:
输入./file_name.sh
命令太长。。。
只能在脚本目录中才能执行,不然使用绝对路径输出的命令更长。
这里我们想到了linux的alias命令:
alias命令:
alias命令使用方式为 alias alias_name="ori_command"
,将alias_name
设置为ori_command
的别名,这样我们输入执行alias_name
,就相当于执行了ori_command;
可是,我们会发现,当你关闭当前shell后,再打开一个shell窗口,再使用alias_name,系统提示command not found;
有没有能保持命令的方式呢?编辑bash_profile
文件。
bash_profile文件
我们编辑bash_profile文件,此文件会在终端窗口创建的时候首先执行一次,所以可以帮我们再设置一次别名;
执行命令vim ~./bash_profile,
在文件内部添加:
alias alias_name="/root_dir/../file_name.sh
保存后,再使用 . ~./bash_profile
或source ~./bash_profile
在当前脚本执行一遍设置别名命令,完成设置;
这样,我们无论在哪个目录,只要输入alias_name
命令,回车,真正的一键登陆!
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Shell zur Implementierung der automatischen SSH-Anmeldung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen


![Vollständiges Tutorial zu Telnet in Windows 11 [Installation/Aktivierung und Fehlerbehebung]](https://img.php.cn/upload/article/000/000/164/168476253791019.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
<p>Telnet ist die Abkürzung für „Terminal Network“. Es handelt sich um ein Protokoll, mit dem Benutzer einen Computer mit einem lokalen Computer verbinden können. </p><p>Hier bezieht sich der lokale Computer auf das Gerät, das die Verbindung initiiert, und der mit dem lokalen Computer verbundene Computer wird als Remote-Computer bezeichnet. </p><p>Telnet läuft auf einem Client/Server-Prinzip und obwohl es veraltet ist, wird es auch im Jahr 2022 immer noch von vielen Menschen verwendet. Viele Menschen sind bereits auf das Betriebssystem Windows 11 umgestiegen, das neueste Betriebssystem von Microsoft. &
![Explorer.exe startet beim Systemstart nicht [Fix]](https://img.php.cn/upload/article/000/887/227/168575230155539.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Heutzutage stoßen viele Windows-Benutzer auf schwerwiegende Windows-Systemprobleme. Das Problem besteht darin, dass Explorer.exe nach dem Laden des Systems nicht gestartet werden kann und Benutzer keine Dateien oder Ordner öffnen können. Allerdings können Windows-Benutzer in einigen Fällen den Windows Explorer manuell über die Eingabeaufforderung öffnen und müssen dies bei jedem Systemneustart oder nach dem Systemstart tun. Dies kann problematisch sein und ist auf die folgenden Faktoren zurückzuführen. Beschädigte Systemdateien. Aktivieren Sie die Schnellstarteinstellungen. Veraltete oder problematische Anzeigetreiber. An einigen Diensten im System wurden Änderungen vorgenommen. Geänderte Registrierungsdatei. Unter Berücksichtigung aller oben genannten Faktoren haben wir einige gefunden, die den Benutzern sicherlich helfen werden

Bei der Verarbeitung von Dateien unter Linux-Systemen ist es manchmal erforderlich, Zeilen am Ende der Datei zu löschen. Dieser Vorgang kommt in praktischen Anwendungen sehr häufig vor und kann durch einige einfache Befehle erreicht werden. In diesem Artikel werden die Schritte zum schnellen Löschen der Zeile am Ende der Datei im Linux-System vorgestellt und spezifische Codebeispiele bereitgestellt. Schritt 1: Überprüfen Sie die letzte Zeile der Datei. Bevor Sie den Löschvorgang durchführen, müssen Sie zunächst bestätigen, welche Zeile die letzte Zeile der Datei ist. Sie können den Befehl tail verwenden, um die letzte Zeile der Datei anzuzeigen. Der spezifische Befehl lautet wie folgt: tail-n1filena

Mit der Entwicklung des Cloud Computing und des Internets der Dinge hat die Fernbedienung von Servern immer mehr an Bedeutung gewonnen. In Python können wir das Paramiko-Modul verwenden, um SSH-Remote-Operationen einfach zu implementieren. In diesem Artikel stellen wir die grundlegende Verwendung von Paramiko und die Verwendung von Paramiko in Python zur Fernverwaltung von Servern vor. Was ist Paramiko Paramiko ist ein Python-Modul für SSHv1 und SSHv2, mit dem SSH-Clients verbunden und gesteuert werden können

Für die meisten Windows-Benutzer war Remote Desktop Protocol (RDP) schon immer die erste Wahl für die Fernverwaltung, da es eine benutzerfreundliche grafische Oberfläche bietet. Für Systemadministratoren, die eine detailliertere Kontrolle benötigen, ist SSH jedoch möglicherweise besser geeignet. Über SSH können Administratoren über die Befehlszeile mit Remote-Geräten interagieren, was die Verwaltungsarbeit effizienter gestalten kann. Der Vorteil von SSH liegt in seiner Sicherheit und Flexibilität, die es Administratoren erleichtert, Remote-Verwaltungs- und Wartungsarbeiten durchzuführen, insbesondere wenn sie mit einer großen Anzahl von Geräten arbeiten oder automatisierte Aufgaben ausführen. Während sich RDP in puncto Benutzerfreundlichkeit auszeichnet, ist SSH für Systemadministratoren hinsichtlich Leistung und Kontrolle überlegen. Bisher mussten Windows-Benutzer etwas ausleihen

Hintergrund Wenn Sie auf die MySQL-Datenbank eines Remote-Servers zugreifen müssen, die Sicherheitsmaßnahmen jedoch für den Sicherheitszeitraum der MySQL-Datenbank so eingestellt sind, dass nur lokale Verbindungen zugelassen werden (d. h. Sie müssen sich beim Server anmelden, um sie verwenden zu können). Auf andere Remoteverbindungen kann nicht direkt zugegriffen werden. Der entsprechende Port wurde ebenfalls geändert, sodass Sie eine Verbindung zur Datenbank basierend auf SSH herstellen müssen. Das Herstellen einer Verbindung zur Datenbank entspricht auf diese Weise der Schnittstelle in Navicat, die auf einer SSH-Verbindung basiert. Navicat stellt eine Verbindung zur Datenbankinstallationsunterstützungsbibliothek her. Wenn Sie eine Verbindung zu MySQL herstellen möchten, müssen Sie zuerst pymysqlpipinstallpymysql installieren, um die SSH-basierte Bibliothek sshtunnelpipinstallsshtunnel# zu installieren.

1. Der Zweck des gegenseitigen SSH-Vertrauens 1. Beim Aufbau eines Clusters ist gegenseitiges SSH-Vertrauen erforderlich, was einem bequemen Betrieb auf einem anderen Knoten förderlich ist. 2. Wenn Sie den SCP-Remote-Kopiervorgang verwenden, müssen Sie den Benutzernamen und das Kennwort des Zielservers eingeben. Zu diesem Zeitpunkt können Sie die gegenseitige SSH-Vertrauensstellung zwischen Linux-Servern konfigurieren, sodass Sie sich beim Betrieb zwischen mehreren Servern ohne Kennwort anmelden können Linux-Server. 2. Das Prinzip der gegenseitigen SSH-Vertrauenskonfiguration Kurz gesagt: Der Server speichert das Zertifikat des Zielhosts, sodass die Authentifizierung automatisch durchgeführt werden kann, ohne dass ein Kennwort eingegeben werden muss. 3. Schritte zur Konfiguration der gegenseitigen SSH-Vertrauensstellung 1. Jeder Knoten generiert sein eigenes öffentliches Schlüssel- und privates Schlüsselpaar. 2. Senden Sie Ihre öffentliche Schlüsseldatei an die andere Partei. 3. Überprüfen Sie, ob die gegenseitige Vertrauenskonfiguration erfolgreich ist. 4. Konfigurieren Sie hier die gegenseitige SSH-Vertrauensstellung mit MYDB01 und

Die Schritte zum Installieren von SSH auf Ihrem Debian11-Server und zum Erstellen eines neuen Benutzers, um die SSH-Remote-Anmeldung zu ermöglichen, sind wie folgt: Schritt 1: SSH installieren Um den SSH-Server zu installieren, müssen Sie sich als Root-Benutzer oder bei Ihrem Debian11-Server anmelden ein Benutzer mit Sudo-Berechtigungen. Führen Sie im Terminal den folgenden Befehl aus, um den SSH-Server zu installieren: sudoaptupdatesudoaptinstallopenssh-server Schritt 2: Neuen Benutzer erstellen Um einen neuen Benutzer zu erstellen, können Sie den Befehl adduser verwenden. Ersetzen Sie den folgenden Befehl durch Ihren gewünschten Benutzernamen: sudoaddusernew_username Sie werden aufgefordert, das Passwort des neuen Benutzers und andere festzulegen
