So verwenden Sie SSHPass für nicht interaktive SSH-Login

So verwenden Sie SSHPass für nicht interaktive SSH-Login
Der Linux-Benutzer kann eine kennwortbasierte oder kennwortlose Authentifizierung verwenden, um sich mit SSH auf dem Remote-Server anzumelden. Die Authentifizierung ohne Passwort ist sicherer, aber die einfachste und beliebteste Art der Authentifizierung ist die passwordbasierte Authentifizierung. Der Benutzer muss das Kennwort angeben, wann immer es zur Authentifizierung erforderlich ist, und der SSH muss außerdem manuell auf ein Shell -Skript zugreifen.

Der sshpass Das Dienstprogramm wird zur Implementierung der automatisierten kennwortbasierten Authentifizierung verwendet. Es wird das SSH in dedizierter TTY (Teletypewriter) ausgeführt, um zu bestätigen, dass das Kennwort von einem interaktiven Tastaturbenutzer für eine nicht interaktive Authentifizierung bereitgestellt wird. Wie zum sshpass Kann zur Authentifizierung in diesem Tutorial verwendet werden.

Voraussetzungen

Bevor Sie mit den Schritten dieses Tutorials beginnen, müssen die folgenden Schritte ausgeführt werden.

Aktivieren Sie den SSH -Dienst auf Ubuntu, wenn er vorher nicht aktiviert ist.

Generieren Sie die SSH -Schlüsselpaare, um die Befehle auf dem Remote -Server auszuführen. Führen Sie den folgenden Befehl aus, um den öffentlichen Schlüssel und den privaten Schlüssel zu erstellen. Der private Schlüssel wird auf dem Remote -Server gespeichert und die öffentlichen Schlüssel werden sicher im Client gespeichert.

$ ssh -keygen -t RSA

Führen Sie den folgenden Befehl aus, um die zu öffnen sshd_config Datei mit dem Nano -Editor zum Hinzufügen einiger notwendiger Konfigurationen.

$ sudo nano/etc/ssh/sshd_config

Fügen Sie die folgenden Zeilen in der Datei hinzu, um die Stammanmeldung und die kennwortbasierte Authentifizierung zu aktivieren.

PasswortAuthentication Ja
Erlaubnisrootlogin Ja

Führen Sie den folgenden Befehl aus, um den SSH -Dienst neu zu starten.

$ sudo Service SSH Neustart

Syntax

Die Syntax dieses Befehls ist unten angegeben. Es unterstützt verschiedene Optionen, die später beschrieben wurden.

$ sshpass [-f Dateiname | -D-Nummer | -P Kennwort | -E] [Optionen] Befehlsargumente

Verschiedene Optionen des SSHPass -Befehls

Der Zweck von verschiedenen sshpass Optionen wurden hier beschrieben. sshpass liest das Passwort aus der Standardeingabe, wenn keine Option angegeben ist.

Möglichkeit Zweck
-p Passwort Es wird verwendet, um das Passwort in der Befehlszeile bereitzustellen.
-f Dateiname Es wird verwendet, um die alternative Quelle des Passworts zu geben.
-d Nummer Es wird verwendet, um den von SSHPass geerbten Dateideskriptor bereitzustellen.
-e Es wird verwendet, um das Kennwort aus der Umgebungsvariablen "SSHPass" zu nehmen.

SSHPass installieren

SSHPass ist standardmäßig nicht auf Ubuntu installiert. Führen Sie den folgenden Befehl aus, um SSHPass auf Ubuntu zu installieren.

$ sudo apt-get install sshpass

Die folgende Ausgabe wird angezeigt, wenn die SSHPass ordnungsgemäß installiert ist.

Verbinden Sie mit dem Server, indem Sie ein Kennwort bereitstellen

In diesem Teil des Tutorials wird die Möglichkeit, sich mit dem Remote -Computer mit der SSHPass mit -P -Option zu verbinden. Hier ist der Benutzername "Fahmida" und das Passwort ist '12345' des Street -Maschine. Die IP -Adresse des Servergeräts beträgt 10.0.2.15. Der Benutzername des Client -Computers ist "Jamin". Führen Sie den folgenden Befehl aus, um eine Verbindung mit dem Server herzustellen, indem Sie das Kennwort bereitstellen.

$ sshpass -p '12345' ssh [email protected]

Die folgende Ausgabe wird angezeigt, wenn die Verbindung ordnungsgemäß mit der Servermaschine festgelegt wird. Die Ausgabe zeigt, dass der Benutzername in der Eingabeaufforderung "Yesmin" in "fahmida" geändert wird, nachdem die Verbindung hergestellt wurde. Wenn der Benutzer nun einen Befehl ausführt, wird er vom Servergerät aus ausgeführt.

Verbinden Sie mit dem Server ohne Kennwort

Es ist nicht sicher, das Passwort in der Befehlszeile anzugeben. Dieses Problem kann auf zwei Arten gelöst werden. Eine Möglichkeit besteht darin, das Kennwort in der Umgebungsvariablen mit dem zu speichern Export Der Befehl und eine andere Möglichkeit besteht darin, das Passwort in einer Datei zu speichern.

Führen Sie den folgenden Befehl aus, um das Passwort in der SSHPass -Umgebungsvariablen mit dem Befehl exportieren zu speichern.

$ export sshpass = "12345"

Jetzt können Sie den Befehl sshpass mit der Option -e ausführen, um die Verbindung mit dem Servergerät herzustellen, ohne ein Passwort in der Befehlszeile anzugeben. Führen Sie den folgenden Befehl aus, um eine Verbindung mit dem Server herzustellen, ohne das Kennwort zu geben.

$ sshpass -e ssh [email protected]

Die folgende Ausgabe wird angezeigt, wenn die Verbindung ordnungsgemäß mit der Servermaschine festgelegt wird. Die Ausgabe zeigt, dass der Benutzername in der Eingabeaufforderung in 'fahmida' von 'Yesmin' geändert wird, nachdem die Verbindung wie der vorherige Befehl erstellt wurde.

Der Weg, um mit dem Server eine Verbindung herzustellen sshpass Durch das Speichern des Passworts in einer Datei wurde in diesem Teil des Tutorials gezeigt. Führen Sie den folgenden Befehl aus, um die zu erstellen sshfile Datei und speichern Sie das Passwort, um eine Verbindung mit dem Servergerät herzustellen.

$ echo '12345'> sshFile

Führen Sie den folgenden Befehl aus, um die Berechtigungsbits für die festzulegen sshfile Datei, mit der die Datei sichern.

$ chmod 0400 sshfile

Führen Sie nun den folgenden Befehl aus, um eine Verbindung mit dem Server herzustellen, ohne das Kennwort in der Befehlszeile bereitzustellen. Hier wurde die Option -F mit verwendet sshpass Befehl zum Lesen des Passworts aus der Datei.

$ sshpass -f sshfile ssh [email protected]

Die folgende Ausgabe wird angezeigt, wenn die Verbindung ordnungsgemäß mit der Servermaschine festgelegt wird. Die Ausgabe zeigt, dass der Benutzername in der Eingabeaufforderung in 'fahmida' von 'Yesmin' geändert wird, nachdem die Verbindung wie der vorherige Befehl erstellt wurde.

Verwenden des Befehls sshpass im Skript

Der Befehl sshpass wird verwendet, um die Verbindung mit dem Server aus dem Terminal im vorherigen Teil dieses Tutorials herzustellen. Sie können jedoch einen Befehl im Servergerät ausführen, ohne sich im Server anzumelden, indem Sie ein Bash -Skript mit SSHPass -Befehl schreiben. Erstellen Sie eine Bash -Datei mit dem Namen ssh.Sch im Client -Computer mit den folgenden Inhalten. Das Skript führt das aus 'PWD' Befehl in der Servermaschine und speichern Sie die Ausgabe in einer Variablen. Der Wert der Variablen wird später gedruckt.

ssh.Sch
#!/Bin/Bash
value = $ (SSHPass -f SSHFILE SSH [email protected] 'PWD')
echo $ value

Führen Sie den folgenden Befehl vom Terminal aus.

$ bash ssh.Sch

Die folgende Ausgabe wird angezeigt, wenn die PWD Der Befehl wird im Servergerät ordnungsgemäß ausgeführt. Der Benutzername der Servermaschine ist 'Fahmida'. Die Ausgabe zeigt also, dass '/home/fahmida/' die Ausgabe der ist PWD Befehl.

Abschluss

Die Verwendung des SSHPass-Befehls für nicht interaktive Anmeldungen wurde in diesem Tutorial von zwei verschiedenen Benutzerkonten des Localhost gezeigt. Sie können dieselbe Aufgabe für den Remote -Host erledigen, indem Sie die in diesem Tutorial gezeigten Schritte ausführen.