Solo puede tener un comando por tecla, porque el comando es "forzado".
Pero puedes usar un script de envoltura. El comando llamado obtiene la línea de comando original como variable de entorno$SSH_ORIGINAL_COMMAND
, que puede evaluar.
Por ejemplo, pon esto en ~/.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
Luego referencialo ~/.ssh/authorized_keys
con
command="/home/user/.ssh/allowed-commands.sh",…
SSH_ORIGINAL_COMMAND
(perman sshd
) para que esté disponible en scripts. También para dar un ejemplo de scripts automatizados que permitenSSH_ORIGINAL_COMMAND
ejecutar ciertos patrones de . Ver también unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.htmlEn el gran SSH, The Secure Shell: The Definitive Guide book de O'Reilly, en el capítulo ocho, hay un buen ejemplo dado usando un script como el siguiente:
Usando esto en su
.authorized_keys
archivo como:... te da esto cuando haces
ssh
:fuente
scp
,sftp
y todas las demás cosas que podrían resultarle útiles algún día.command
opción en general?Otros enfoques usan, por ejemplo, un shell restringido para el usuario dado o usan un contenedor que restringe los comandos a todos los archivos / scripts que se encuentran en un directorio específico, lo que permite aumentar la lista de comandos sin cambiar el contenedor.
Otro artículo describe un script genérico, que también permite argumentos de línea de comando para los comandos permitidos, pero permite bloquearlos con reglas expresadas como expresiones regulares.
Este ejemplo se expresaría de la siguiente manera:
Y
.onlyrules
se crearían archivos con este contenido:La ventaja de este enfoque 'único' es que no hay necesidad de escribir scripts individuales para cada usuario y situación.
fuente
ForcedCommand