Welche Einschränkungen sind für einen SSH-Schlüssel erforderlich, um das Speichern und Schreiben von Dateien nur über SSHFS zu beschränken?

Welche Einschränkungen sind für einen SSH-Schlüssel erforderlich, um das Speichern und Schreiben von Dateien nur über SSHFS zu beschränken?

Ich möchte die verwendeten Schlüssel einschränken, um sshfssicherzustellen, dass nur der sshfsProzess diesen Schlüssel verwenden kann, d. h., es werden nur die Befehle sshfszum Schreiben und Speichern von Dateien und Auflisten von Verzeichnissen verwendet.

Welche weiteren Optionen sollte ich zusätzlich zu den Optionen no-port-forwarding,no-x11-forwarding,no-agent-forwarding,no-pty(von denen ich annehme, dass sie keine Auswirkungen haben) hinzufügen?

Ich denke dabei insbesondere an die command=Option und welche sftpOptionen scpdarin enthalten sein sollten.

Antwort1

Bei mir funktioniert das:

command="/usr/lib/ssh/sftp-server"

(Sie können es selbst herausfinden, indem Sie die Prozessliste auf dem SSH-Server beobachten.)

Noch besser wäre es, wenn man auf ein Shell-Skript verweist command, das prüft, ob der Client den richtigen Befehl verwendet hat. So (vereinfacht, ungetestet):

#!/bin/sh
# We get SSH_ORIGINAL_COMMAND from sshd

# comment out for production!
echo "debug original command: $SSH_ORIGINAL_COMMAND" >&2

if [ "$SSH_ORIGINAL_COMMAND" != "/usr/lib/ssh/sftp-server" ]; then
    echo "access denied" >&2
    exit 1
fi
exec /usr/lib/ssh/sftp-server

Ein solches Skript würde es auch ermöglichen, die zulässigen Argumente für den SFTP-Server zu überprüfen. Ähnliche Idee wie beim bekannten rrsyncSkript.

Zu den anderen möglichen "no-*"-Optionen. Ich denke, die meisten davon können Sie verwenden, probieren Sie es einfach aus. Sie werden erklärt in man sshd->AUTHORIZED_KEYS FILE FORMAT

verwandte Informationen