Kann ein Befehl über ssh mit einem Nologin-Benutzer ausgeführt werden?

13

Wenn ein Benutzer hat, loginShell=/sbin/nologinist es immer noch möglich

ssh user@machine [command]

Angenommen, der Benutzer verfügt über die richtigen SSH-Schlüssel in seinem Ausgangsverzeichnis, die zur Authentifizierung verwendet werden können.

Mein Ziel ist es, den Benutzer als Nologin zu behalten, aber dennoch Befehle auf einigen anderen Computern im Netzwerk ausführen zu können (ähnlich wie bei der Verwendung durch 'sudo -u'), und ich frage mich, ob dies ein vernünftiger Kurs ist.

Centimane
quelle
1
Es sollte funktionieren. Das commandwird anstelle der Login-Shell ausgeführt.
Orion
1
Dies macht den Zweck der Konfiguration /sbin/nologinals Shell zunichte. Wenn Sie Bedenken hinsichtlich der Sicherheit des Kontos haben, ist es ausreichend, die Kennwortauthentifizierung zu deaktivieren und SSH-Schlüssel zu verwenden.
Creek
@Creek Es gibt einen Unterschied zwischen Login-Shells und anderen Instanzen von Shell. Was er fragt, muss also nicht unbedingt den Zweck von / sbin / nologin zunichte machen. Möglicherweise möchte er einige Arbeiten außerhalb des Kontexts einer Anmeldeshell ausführen.
Michael Martinez
7
@orion Falsch. Der Befehl wird von der Login-Shell ausgeführt.
Gilles 'SO - hör auf böse zu sein'
@MichaelMartinez im Kontext seines Beispiels: Wenn sich die Shell des Benutzers befindet, kann sich der /sbin/nologinBenutzer nicht anmelden oder Befehle auf dem Computer ausführen. Cronjobs können als Benutzer ausgeführt und sftpzum Öffnen von Sitzungen konfiguriert werden, aber das Öffnen einer Shell über SSH wird nicht stattfinden
Creek

Antworten:

17

Die Einstellung /sbin/nologinals Shell des Benutzers (oder /bin/falseoder /bin/true, die fast gleichwertig sind ) verhindert, dass sich der Benutzer anmeldet, um einen Befehl auszuführen. SSH ruft immer die Anmeldeshell des Benutzers auf, um Befehle auszuführen. Daher müssen Sie die Anmeldeshell auf eine festlegen, die einige Befehle ausführen kann.

Es gibt mehrere eingeschränkte Shells, mit denen Benutzer nur wenige Befehle ausführen können. Zum Beispiel rssh und scponly sind beide solche Schalen , die dem Benutzer erlauben , einige vordefinierte Befehle auszuführen (wie scp, sftp-server, rsync, ...). Siehe auch Benutzerzugriff unter Linux einschränken und Benötigen Sie eine Shell für SCP?

Gilles 'SO - hör auf böse zu sein'
quelle
Vielen Dank, ich habe mich damit abgefunden, dem Konto eine Login-Shell zu geben, damit es die Remote-Befehle ausführen kann. Die bessere Lösung wäre wahrscheinlich ssh als aktueller Benutzer gewesen und hätte sudo -u für den Befehl ssh aufgerufen, aber das ist in meinem Fall nicht vollständig anwendbar.
Centimane
1

Es scheint, die Antwort ist nein.

ssh user@machine [command]

Wenn SSH-Schlüssel vorhanden sind, ergibt sich nur Folgendes:

This account is currently not available

Anstatt den Befehl auszuführen, muss ich ihm anscheinend Zugriff auf Bash gewähren.

Centimane
quelle
-4

Ich weiß nicht, ob das möglich ist (sollte aber leicht zu testen sein), aber es gibt eine Funktion, die Ihre Frage wahrscheinlich auf eine bestimmte Weise beantwortet und auf jeden Fall Ihr Problem löst.

Sie können der Tastenzeile in einen Befehl hinzufügen authorized_keys. In diesem Fall wird dieser Befehl ausgeführt, sonst nichts. Ich gehe davon aus, dass dies funktioniert, /sbin/nologinda die Shell sowieso ignoriert werden sollte.

Sie benötigen jedoch für jeden Befehl, den Sie zulassen, einen anderen Schlüssel.

Hauke ​​Laging
quelle
Leider müsste die Lösung, die ich brauche, flexibler sein als diese
Centimane
Wenn es einfach zu testen ist, sollten Sie es testen, bevor Sie eine Antwort schreiben.
Michael Martinez
@MichaelMartinez Es ist die Aufgabe des Fragestellers, vor dem Fragen einfache Tests durchzuführen. Es ist nicht schwer zu bemerken, dass die Frage nicht beantwortet wurde, sondern ein Vorschlag für das Problem gemacht wurde, das die Frage verursacht hat. Welches ist perfekt als Antwort geeignet. Das Downvoting ist einfach nur dumm. Hätten Sie die Antwort ohne den ersten Absatz kritisiert? Genau.
Hauke ​​Laging
3
Der Befehl in authorized_keyswird von der Login-Shell ausgeführt. Nein, dies funktioniert nicht (nicht ohne zusätzliche nicht triviale Konfiguration). (Wie ist es, eine falsche Antwort „dumm“ abzustimmen? Bitte respektieren Sie andere .)
Gilles 'SO - hör auf böse zu sein'