Sie können nur einen Befehl pro Taste eingeben, da der Befehl "erzwungen" wird.
Sie können jedoch ein Wrapper-Skript verwenden. Der aufgerufene Befehl erhält die ursprüngliche Befehlszeile als Umgebungsvariable $SSH_ORIGINAL_COMMAND
, die er auswerten kann.
ZB setzen Sie dies in ~/.ssh/allowed-commands.sh
:
#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.
case "$SSH_ORIGINAL_COMMAND" in
"systemctl restart cups")
systemctl restart cups
;;
"shutdown -r now")
shutdown -r now
;;
*)
echo "Access denied"
exit 1
;;
esac
Dann referenziere es ~/.ssh/authorized_keys
mit
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(perman sshd
) hinzufügt , damit es in Skripten verfügbar ist. Um auch ein Beispiel für automatisierte Skripte zu geben, mit denen bestimmte MusterSSH_ORIGINAL_COMMAND
ausgeführt werden können. Siehe auch unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlIn dem großartigen SSH, The Secure Shell: Das definitive Handbuch von O'Reilly, finden Sie in Kapitel 8 ein schönes Beispiel, das mit einem Skript wie dem folgenden erstellt wurde:
Verwenden Sie dies in Ihrer
.authorized_keys
Datei wie:... gibt Ihnen dies, wenn Sie
ssh
:quelle
scp
,sftp
und all die anderen Dinge könnten Sie einen Tag nützlich finden.command
Option im Allgemeinen?Andere Ansätze verwenden z. B. eine eingeschränkte Shell für den angegebenen Benutzer oder einen Wrapper, der Befehle auf alle Dateien / Skripte beschränkt, die sich in einem bestimmten Verzeichnis befinden, wodurch die Liste der Befehle erweitert werden kann, ohne den Wrapper zu ändern.
Ein anderer Artikel beschreibt ein generisches Skript, das auch Befehlszeilenargumente für die zulässigen Befehle zulässt, sie jedoch mit Regeln sperrt, die als reguläre Ausdrücke ausgedrückt werden.
Dieses Beispiel würde folgendermaßen ausgedrückt:
Und
.onlyrules
mit diesem Inhalt würde eine Datei erstellt:Der Vorteil dieses "einzigen" Ansatzes besteht darin, dass nicht für jeden Benutzer und jede Situation ein eigenes Skript geschrieben werden muss.
quelle
ForcedCommand