Ich möchte die verwendeten Schlüssel einschränken, um sshfs
sicherzustellen, dass nur der sshfs
Prozess diesen Schlüssel verwenden kann, d. h., es werden nur die Befehle sshfs
zum 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 sftp
Optionen scp
darin 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 rrsync
Skript.
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