Unter Ubuntu 11.10 konnte ich SSH-Befehle blockieren, die mit und ohne -T gesendet wurden, und das Kopieren von SCP blockieren, während die Portweiterleitung durchlaufen wurde.
Insbesondere habe ich einen Redis-Server auf "somehost", der an localhost: 6379 gebunden ist und den ich sicher über ssh-Tunnel an andere Hosts weitergeben möchte, die eine Schlüsseldatei haben und mit ssh zusammenarbeiten:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
Dies führt dazu, dass der Redis-Server "localhost" -Port 6379 auf "somehost" lokal auf dem Host angezeigt wird, der den Befehl ssh ausführt, der dem "localhost" -Port 16379 neu zugeordnet ist.
Auf der Fernbedienung "somehost" Folgendes habe ich für autorisierte Schlüssel verwendet:
cat .ssh/authorized_keys (portions redacted)
no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here keyuser@keyhost
Das No-Pty löst die meisten SSH-Versuche aus, die ein Terminal öffnen möchten.
Das allowopen erklärt, welche Ports weitergeleitet werden dürfen, in diesem Fall Port 6379 der Redis-Server-Port, den ich weiterleiten wollte.
Der Befehl = "/ bin / echo Befehle nicht senden" gibt "Befehle nicht senden" zurück, wenn es jemandem oder etwas gelingt, Befehle über ssh -T oder auf andere Weise an den Host zu senden.
In einem aktuellen Ubuntu-Modus man sshd
wird authorized_keys / command wie folgt beschrieben:
command = "command" Gibt an, dass der Befehl immer dann ausgeführt wird, wenn dieser Schlüssel zur Authentifizierung verwendet wird. Der vom Benutzer angegebene Befehl (falls vorhanden) wird ignoriert.
Versuche, das Kopieren sicherer scp-Dateien zu verwenden, schlagen ebenfalls mit einem Echo von "Nicht senden-Befehlen" fehl. Ich habe festgestellt, dass SFTP auch bei dieser Konfiguration fehlschlägt.
Ich denke, der eingeschränkte Shell-Vorschlag, der in einigen früheren Antworten gemacht wurde, ist auch eine gute Idee. Ich würde auch zustimmen, dass alles, was hier detailliert beschrieben wird, durch Lesen von "man sshd" und Suchen darin nach "autorisierten_ Schlüsseln" bestimmt werden kann.
no-pty
Öffnen der interaktiven Ansicht ist zwar nicht möglich, verhindert jedoch nicht die Ausführung des Befehls, sodass der Benutzer dieauthorized_keys
Datei bearbeiten kann, wenn er Zugriff auf etwas wie hatssh server 'sed -i -e s/no-pty// ~/.ssh/authorized_keys'
.