Nutzt man SSH in Scripts, muss man sich etwas einfallen lassen – vor allem dann, wenn man etwa auf Geräten arbeitet, auf denen man etwa kein Keyfile ablegen kann – Hardware-Firewalls etwa.
In diesem Fall müsste man das SSH-Passwort angeben, wäre natürlich möglich – ist aber umständlich, noch dazu müsste man das Passwort im Script angeben. Mit sshpass gelingt dies unter Linux ganz einfach.
Inhaltsverzeichnis
sshpass installieren
Unter auf Debian basierenden Linux-Distributionen installieren Sie diese Software wie üblich ganz einfach über die Paket-Verwaltung durch das Paket „sshpass„.
sshpass nutzen
Nehmen wir einmal an, wir wollen in einem Script den Befehl:
show status
auf dem Rechner linux-bibel.org
ausführen. Grundsätzlich könnte man das Passwort Passwort
und den Usernamen user
im Script angeben:
sshpass -p 'Passwort' ssh user@linux-bibel.org 'show status' > status.txt
Das Passwort ist im Script sichtbar – und noch schlimmer, hat man die Systemnachrichten so eingerichtet, dass jeder Benutzer diese sehen kann – oder die Nachrichten gleich an eine ganze Gruppe per E-Mail versendet – schlimm. In der E-Mail könnte etwa stehen:
failed; timeout 'linux-bibel.org': sshpass -p 'Passwort' ssh user@linux-bibel.org 'show status' > status.txt
Das Passwort ist zwar bei der Übertragung (per SSH) verschlüsselt, da das Passwort im Befehl steht, ist jedoch in der Nachricht der komplette Befehl sichtbar. Lagert man das Passwort jedoch in eine externe Datei aus, ist auch das Passwort im Befehl nicht zu sehen. Im Beispiel lege ich das Passwort in die Datei „dateiname.txt“ aus:
sshpass -fdateiname.txt ssh user@linux-bibel.org 'show status' > status.txt
In der Datei „dateiname.txt“ steht anschließend ganz einfach nur in der ersten Zeile das Passwort:
Passwort
Noch keine Reaktion