GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH-Passwortautomatisierung in Linux mit sshpass

[Anmerkung des Herausgebers, 29. November 2021:Alle Beispiele für die Angabe eines Passworts in der Befehlszeile beinhalten das Risiko, dass das Passwort im Shell-Verlauf des Benutzers erfasst wird (falls unterstützt) oder für alle Systembenutzer in der Prozessliste sichtbar ist. Sicherheitsexperten empfehlen, alle Dateien zu löschen und Shell-Protokolle zu löschen.]

Das Verbinden und Übertragen von Dateien an entfernte Systeme ist etwas, was Systemadministratoren ständig tun. Ein wichtiges Tool, das von vielen Systemadministratoren auf Linux-Plattformen verwendet wird, ist SSH. SSH unterstützt zwei Formen der Authentifizierung:

  1. Passwortauthentifizierung
  2. Public-Key-Authentifizierung

Die Public-Key-Authentifizierung gilt als die sicherste Form dieser beiden Methoden, obwohl die Passwortauthentifizierung die beliebteste und einfachste ist. Bei der Passwortauthentifizierung wird der Benutzer jedoch immer aufgefordert, das Passwort einzugeben. Diese Wiederholung ist mühsam. Darüber hinaus erfordert SSH auch manuelle Eingriffe, wenn es in einem Shell-Skript verwendet wird. Wenn bei der Verwendung der SSH-Passwortauthentifizierung eine Automatisierung erforderlich ist, dann ein einfaches Tool namens sshpass ist unverzichtbar.

Was ist sshpass?

Der sshpass Dienstprogramm wurde entwickelt, um SSH mit keyboard-interactive auszuführen Passwort-Authentifizierungsmodus, aber nicht interaktiv.

SSH verwendet den direkten TTY-Zugriff, um sicherzustellen, dass das Passwort tatsächlich von einem interaktiven Tastaturbenutzer ausgegeben wird. sshpass führt SSH in einem dedizierten TTY aus und täuscht SSH vor, dass es das Passwort von einem interaktiven Benutzer erhält.

sshpass installieren

Sie können sshpass installieren mit diesem einfachen Befehl:

# yum install sshpass

Verwenden Sie sshpass

Geben Sie den Befehl an, den Sie nach sshpass ausführen möchten Optionen. Normalerweise lautet der Befehl ssh mit Argumenten, es kann aber auch jeder andere Befehl sein. Die SSH-Passwortabfrage ist jedoch derzeit in sshpass fest codiert .

Die Zusammenfassung für den sshpass Befehl wird unten beschrieben:

sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments

Wo:

-ppassword
    The password is given on the command line. 
-ffilename
    The password is the first line of the file filename. 
-dnumber
    number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. 
-e
    The password is taken from the environment variable "SSHPASS".

Beispiele

Um den Wert und die Verwendung von sshpass besser zu verstehen , schauen wir uns einige Beispiele mit verschiedenen Dienstprogrammen an, darunter SSH, Rsync, Scp und GPG.

Beispiel 1:SSH

Verwenden Sie sshpass um sich mit SSH bei einem Remote-Server anzumelden. Nehmen wir an, das Passwort ist !4u2tryhack . Nachfolgend finden Sie verschiedene Möglichkeiten, die sshpass-Optionen zu verwenden.

A. Verwenden Sie den -p (Dies gilt als die am wenigsten sichere Wahl und sollte nicht verwendet werden):

$ sshpass -p !4u2tryhack ssh [email protected]

Das -p Die Option sieht folgendermaßen aus, wenn sie in einem Shell-Skript verwendet wird:

$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]

B. Verwenden Sie das -f Option (das Passwort sollte die erste Zeile des Dateinamens sein):

$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]

Die $ chmod 0400 pass_file ist entscheidend für die Gewährleistung der Sicherheit der Kennwortdatei. Die Standard-Umask auf RHEL ist 033, was eine weltweite Lesbarkeit der Datei ermöglichen würde.

Hier ist das -f Option bei Verwendung im Shell-Skript:

$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]

C. Verwenden Sie das -e Option (das Passwort sollte die erste Zeile des Dateinamens sein):

$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]

Das -e Option sieht bei Verwendung in Shell-Skript so aus:

$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]

Beispiel 2:Rsync

Verwenden Sie sshpass mit rsync :

$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/ 

Oben wird das -e verwendet Option, die das Passwort an die Umgebungsvariable SSHPASS übergibt

Wir können das -f verwenden wie folgt umschalten:

$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/

Beispiel 3:Scp

Verwenden Sie sshpass mit scp:

$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html

Beispiel 4:GPG

Sie können auch sshpass verwenden mit einer GPG-verschlüsselten Datei. Wenn das -f switch verwendet wird, ist die Referenzdatei im Klartext. Mal sehen, wie wir eine Datei mit GPG verschlüsseln und verwenden können.

Erstellen Sie zuerst eine Datei wie folgt:

$ echo '!4u2tryhack' > .sshpasswd

Als nächstes verschlüsseln Sie die Datei mit gpg Befehl:

$ gpg -c .sshpasswd

Entfernen Sie die Datei, die den Klartext enthält:

$ rm .sshpasswd

Verwenden Sie es schließlich wie folgt:

$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]

Abschluss

sshpass ist ein einfaches Tool, das Systemadministratoren eine große Hilfe sein kann. Dies überschreibt keineswegs die sicherste Form der SSH-Authentifizierung, nämlich die Public-Key-Authentifizierung. Allerdings sshpass kann auch zur Sysadmin-Toolbox hinzugefügt werden.

[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]


Linux
  1. SSHPass:SSH-Zugang zu einem Server mit einem Skript ohne Passwort (nicht interaktiv)

  2. Erste Schritte mit SSH unter Linux

  3. So erlauben Sie ssh mit leeren Passwörtern in Linux

  4. sshpass-Befehl:Nicht interaktive Kennwortauthentifizierung mit SSH

  5. Wie richte ich Rsync ohne Passwort mit SSH unter UNIX / Linux ein?

SSH-Passworttest mit Hydra unter Kali Linux

So deaktivieren Sie die SSH-Passwortauthentifizierung auf Linux VPS

SSH-Befehle in Linux mit Verwendungsbeispielen

Finden Sie Benutzerkonten mit leerem Passwort in Linux

So übergeben Sie das Passwort an den SSH-Befehl in Linux

Wie schütze ich GRUB mit einem Passwort unter Linux?