
In der Firma, in der ich arbeite, haben wir bestimmte gemeinsame Konten, die jeder über SSH verwenden kann, um bestimmte Aufgaben auszuführen. Mittlerweile haben wir zu viele Benutzer und jeder von ihnen hat seine eigenen Benutzervorteile wie Shell-Aliase usw.
Ich versuche, den Benutzern unterschiedliche Shell-Einstellungen zu ermöglichen, je nachdem, ~/.bash_profile
wer sich tatsächlich angemeldet hat. Wenn sich Jonathan beispielsweise anmeldet, soll die Shell zusätzlich ausführen ~/.Jonathan_profile
, und für Bob soll die Shell das Quellprofil ausführen ~/.Bob
.
Ich bin jedoch nicht sicher, ob es eine Möglichkeit gibt, den Kontonamen eines über SSH angemeldeten Benutzers auf dem Remotecomputer mitzuteilen.
Alle Hinweise sind herzlich willkommen.
Antwort1
Sie können nicht sagen, welches Konto der Kunde verwendet, weil der Kunde es Ihnen nicht sagt. Aber es gibt diese Dinge, die SiedürfenTun:
Erstellen Sie separate Konten und geben Sie den Benutzern mit sudo Zugriff auf das gemeinsame Konto. Dies ist die wirklich bevorzugte Option, die Ihnen die beste Überwachung bietet (es wird immer protokolliert, wer was tut) und die Benutzer können in ihren Konten beliebige Dienstprogramme ablegen. Es macht jedoch auch die meiste Arbeit.
Verwenden Sie nur die Authentifizierung mit öffentlichem Schlüssel und legen Sie von dort aus die Umgebungsvariable mit der folgenden Syntax fest:
environment="END_USER=whoever" ssh-rsa asdfasdfr...
in
.ssh/authorized_keys
. Dann sehen Sie sich$END_USER
in an.profile
. Natürlich müssen Sie es für jeden öffentlichen Schlüssel festlegen, der zum Anmelden verwendet wird.Sagen Sie allen, dass sie die Umgebungsvariable vom Client aus mit der
SendEnv
Option festlegen sollen (der Server muss entsprechendAcceptEnv
festgelegt sein). Überprüfen Sie die Variable erneut in.profile
.Holen Sie sich die Quell-IP und den Quell-Port aus der
SSH_CONNECTION
Variablen und verwenden Sie diese,ident
um den tatsächlichen Quellbenutzer zu ermitteln.identd
Dies müsste jedoch auf den Clients ausgeführt werden, was heutzutage nur noch selten der Fall ist, da es nicht sehr nützlich ist, potenziellen Angreifern jedoch dabei hilft, Informationen über Ihr System zu erhalten.Für komplexere Anpassungen innerhalb eines einzelnen Kontos ist es immer möglich, einen benutzerdefinierten Shell-Wrapper zu schreiben und ihn mit dem
command
Attribut in autorisierten Schlüsseln zu verwenden. Das ist zwar auch ziemlich viel Arbeit, aber man kann damit fast alle Einschränkungen und Audits implementieren, ohne separate Konten erstellen zu müssen.
Hinweis: Ich würde auf jeden Fall empfehlen, nur öffentliche Schlüssel zu verwenden und das Passwort zu deaktivieren. Wenn Sie also jemandem den Zugriff entziehen möchten, entfernen Sie einfach seinen Schlüssel.