So automatisieren Sie SSH-Anmeldungen, wenn Sie ein Passwort verwenden müssen

SSH bietet keine einfache Möglichkeit, Passwörter über die Standardeingabe zu senden es schwer zu automatisieren. Obwohl dies aus Sicherheitsgründen nicht ideal ist, können Sie die SSH-Passwortauthentifizierung in Bash-Skripten mithilfe des Dienstprogramms sshpass automatisieren.

Bevor wir beginnen—die Verwendung automatisierter Passwörter für SSH gilt aus gutem Grund als schlechte Praxis . In fast allen Fällen ist es besser, einen SSH-Schlüssel zu verwenden, den wir weiter unten zeigen. Kennwörter haben jedoch den Vorteil, dass sie einfacher zu verwalten, zu merken und an Teammitglieder zu verteilen sind. Dies sind alle gleichzeitig Nachteile für die Sicherheit, aber das ist ein Kompromiss, den Sie eingehen können.

SSHPass verwenden

Der normale ssh-Befehl hat kein –password-Flag, damit Sie dies problemlos automatisieren können. Sie müssen ein Tool namens sshpass installieren, um dies explizit zu handhaben. Sie können es von den meisten Linux-Paketmanagern herunterladen; für Debian-basierte Systeme wie Ubuntu wäre das:

sudo apt-get install sshpass

Wenn Sie sshpass in einer Skriptdatei verwenden, können Sie es direkt mit dem Flag -p übergeben, gefolgt von Ihrem Standard-SSH-Befehl:

sshpass -p 'password' ssh user@remote

Dies ist jedoch aus mehreren Gründen keine gute Praxis:

  • Wenn es außerhalb einer Skriptdatei verwendet wird, macht es das Klartext-Passwort für den Linux-Befehlsverlauf und andere Systeme verfügbar. Andere Linux-Benutzer können es möglicherweise sehen.
  • Es ist möglicherweise unklar, dass in dieser Skriptdatei ein Passwort verborgen ist, was möglicherweise zu schlechten Dateiberechtigungen führt, die es aufdecken.
  • Es kann versehentlich in der Versionskontrolle verfolgt werden und erlaubt keine Änderung des auf den Clients verwendeten Passworts.

Werbung

Deshalb sollten Sie das Passwort stattdessen in einer Datei speichern. Stellen Sie sicher, dass Sie die entsprechenden Berechtigungen festlegen, um sicherzustellen, dass andere Benutzer nicht darauf zugreifen können.

echo “password” > password_file chmod 600 password_file

Übergeben Sie dies dann mit -f an sshpass:

sshpass -f password_file ssh user@remote

Stattdessen SSH-Schlüssel einrichten< /h2>

SSH-Schlüssel werden für die meisten Systeme bevorzugt. Sie sind viel länger und schwerer versehentlich undicht zu werden, was sie ideal für die Sicherheit macht. Sie fördern auch die identitätsbasierte Authentifizierung, da SSH-Schlüssel normalerweise an den Computer gebunden sind, auf dem sie erstellt werden.

SSH speichert Ihren öffentlichen Schlüssel in ~/.ssh/id_rsa.pub, für den es verwendet wird alle Anfragen. Es ist ganz einfach, eine neue Schlüsseldatei zu generieren:

ssh-keygen

Sie müssen diese zur Datei ~/.ssh/authorized_keys auf dem Server hinzufügen, zu dem Sie eine Verbindung herstellen möchten. Es gibt einen eingebauten SSH-Befehl, der dies leicht für Sie erledigen kann:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Sobald das erledigt ist, Sie werden nicht mehr nach einem Passwort gefragt. Sie können diesen Schlüssel auf andere Computer kopieren, aber normalerweise ist es in Ordnung, einfach mehrere Schlüssel hinzuzufügen.

Sie möchten trotzdem die Passwortanmeldung auf dem Remote-Server deaktivieren und wahrscheinlich einrichten Ratenbegrenzung, Whitelisting oder sogar Zwei-Faktor-Authentifizierung. Sie können unseren Leitfaden zum Sichern eines über SSH zugänglichen Computers lesen, um mehr zu erfahren.

VERWANDTE: So sperren Sie Ihren SSH-Server


Posted

in

by

Tags: