Mehrere Benutzer verwenden ein Skript, um über passwortloses SSH auf den Remote-Server zuzugreifen

Mehrere Benutzer verwenden ein Skript, um über passwortloses SSH auf den Remote-Server zuzugreifen

Ich richte gerade eine Linux-Box ein, die an Active Directory angebunden ist. Diese Box ermöglicht Benutzern, sich per SSH mit ihrem AD-Benutzernamen und -Passwort anzumelden, um Informationen zu sammeln (Box A). Das Problem ist, dass ich versuche, eine Funktion in /etc/bash.bashrc zu erstellen, sodass die Benutzer beispielsweise nur „get_info“ eingeben müssen. Die Funktion wird sich per SSH mit einem Remote-Computer verbinden (Box B), einen Befehl ausführen und die Informationen an den Benutzer zurückgeben.

Das Problem dabei ist, dass ich einen RSA-Schlüssel auf Box A generiert, ihn zu den autorisierten Schlüsseln von Box B hinzugefügt habe und er funktioniert einwandfrei. Das Problem, auf das ich stoße, ist, wie ich dies einmalig für die aktuellen Benutzer und alle neuen Benutzer einrichte, die sich bei Box A anmelden.

Gibt es einen besseren Ansatz als den, den ich derzeit mache? Im Wesentlichen muss ich nur eine Verbindung zur Remote-Box herstellen, einen Befehl ausführen, die Informationen an den Benutzer zurückgeben und das war’s. Wie kann ich neuen Benutzern erlauben, sich über ein Skript mit der Remote-Box zu verbinden, ohne RSA-Schlüssel für sie generieren zu müssen?

Der Funktion get_info wird der Wert „get_info 012345“ bereitgestellt und sie gibt die Ergebnisse zurück.

Antwort1

Was wird benötigt:

  • Von Benutzern gemeinsam genutzte Schlüssel
  • Allgemeines Skript auf dem Server erstellen
  • Beschränken Sie in Ihrer SSH-Konfiguration den Benutzer auf bestimmte Befehle:

    command="/bin/myscript.sh",keine Portweiterleitung,keine X11-Weiterleitung,keine Agentweiterleitung,kein Pty SSH-DSS AAAAB3....o9M9qz4xqGCqGXoJw= Benutzer

  • Erstellen Sie ein Skript auf der lokalen Box oder in ihren Home-Ordnern, das einen SSH-Befehl an den Remote-Server ausführt, das Skript auf dem Server ausführt und dann ausgibt

  • Wenn Sie Eingaben für die Remotesitzung benötigen, können Sie Ihr lokales Skript ausführen

    ./local.sh 01234

Es wird Folgendes ausgeführt:

ssh user@remote '/bin/myscript.sh $1'

Es wird interpretiert als

ssh user@remote '/bin/myscript.sh 01234

Antwort2

Anstatt zu ändern /etc/bash.bashrc, warum erstellen Sie nicht ein Programm (vielleicht in Bash geschrieben), das im Standardpfad für alle Benutzer auf dem lokalen Host liegt. Dieses Programm kann ssh mit einem Flag aufrufen, um auf einen gemeinsamen privaten Schlüssel auf dem lokalen System zu verweisen (Sie könnten ihn z. B. irgendwo in /etc oder /etc/opt/ ablegen). Das Remote-System hätte ein einzelnes Konto, das die Datei mit dem öffentlichen Schlüssel enthält, die so geändert wurde (siehe die SSH-Manpages), dass jeder, der den öffentlichen Schlüssel verwendet, nur einen Befehl ausführen kann (also Ihren Informationsbefehl).

verwandte Informationen