Vous ne pouvez avoir qu'une seule commande par touche, car la commande est «forcée».
Mais vous pouvez utiliser un script wrapper. La commande appelée obtient la ligne de commande d'origine en tant que variable d'environnement $SSH_ORIGINAL_COMMAND
, qu'elle peut évaluer.
Par exemple, mettez ceci dans ~/.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
Référencez-le ensuite ~/.ssh/authorized_keys
avec
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(perman sshd
) afin qu'il soit disponible dans les scripts. Aussi pour donner un exemple de scripts automatisés qui permettent à certains modèles deSSH_ORIGINAL_COMMAND
s'exécuter. Voir aussi unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlDans le grand SSH, The Secure Shell: The Definitive Guide book by O'Reilly, dans le chapitre huit, il y a un bel exemple donné en utilisant un script comme le suivant:
Utiliser ceci dans votre
.authorized_keys
fichier comme:... vous donne ceci lorsque vous faites
ssh
:la source
scp
,sftp
et toutes les autres choses que vous pourriez trouver utiles un jour.command
option en général?D'autres approches utilisent par exemple un shell restreint pour l'utilisateur donné ou utilisent un wrapper qui restreint les commandes à tous les fichiers / scripts trouvés dans un répertoire spécifique, permettant ainsi d'augmenter la liste des commandes sans changer le wrapper.
Un autre article décrit un script générique, qui permet également des arguments de ligne de commande aux commandes autorisées, mais permet de les verrouiller avec des règles exprimées sous forme d'expressions régulières.
Cet exemple serait exprimé de la manière suivante:
Et un
.onlyrules
fichier serait créé avec ce contenu:L'avantage de cette approche «unique» est qu'il n'est pas nécessaire d'écrire des scripts individuels pour chaque utilisateur et situation.
la source
ForcedCommand