Możesz mieć tylko jedno polecenie na klawisz, ponieważ polecenie jest „wymuszone”.
Ale możesz użyć skryptu opakowania. Wywołane polecenie pobiera oryginalny wiersz polecenia jako zmienną środowiskową $SSH_ORIGINAL_COMMAND
, którą może ocenić.
Np. Wstaw to ~/.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
Następnie odwołaj się do tego za ~/.ssh/authorized_keys
pomocą
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(perman sshd
), aby był dostępny w skryptach. Daje również przykład automatycznych skryptów, które pozwalająSSH_ORIGINAL_COMMAND
na uruchomienie określonych wzorców . Zobacz także unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlW wielkim SSH, The Secure Shell: The Definitive Guide O'Reilly, w rozdziale ósmym znajduje się ładny przykład z wykorzystaniem skryptu, takiego jak:
Używając tego w swoim
.authorized_keys
pliku, takich jak:... daje to, wykonując
ssh
:źródło
scp
,sftp
a wszystkie inne rzeczy, które mogą być użyteczne niektóre dni.command
ogólnie tej opcji?Inne podejścia wykorzystują np. Ograniczoną powłokę dla danego użytkownika lub opakowują, która ogranicza polecenia do wszystkich plików / skryptów znalezionych w określonym katalogu, umożliwiając w ten sposób powiększenie listy poleceń bez zmiany opakowania.
W innym artykule opisano ogólny skrypt, który dopuszcza również argumenty wiersza poleceń do dozwolonych poleceń, ale pozwala zablokować je za pomocą reguł wyrażonych jako wyrażenia regularne.
Ten przykład byłby wyrażony w następujący sposób:
I
.onlyrules
pliki zostaną wykonane z tego materiału:Zaletą tego podejścia „tylko” jest to, że nie ma potrzeby pisania indywidualnych skryptów dla każdego użytkownika i sytuacji.
źródło
ForcedCommand