¿Qué restricciones se necesitan en una clave SSH para restringir el almacenamiento y la escritura de archivos solo a través de SSHFS?

¿Qué restricciones se necesitan en una clave SSH para restringir el almacenamiento y la escritura de archivos solo a través de SSHFS?

Quiero restringir las claves utilizadas para sshfsgarantizar que solo el sshfsproceso pueda usar esa clave, es decir, se limitará a los comandos sshfsutilizados para escribir y guardar archivos y enumerar directorios.

Además de las opciones no-port-forwarding,no-x11-forwarding,no-agent-forwarding,no-pty(que supongo que no afectarán) ¿qué otras opciones debo agregar?

Estoy pensando en particular en la command=opción y en las opciones que sftpdeberían scpincluirse.

Respuesta1

Para mí esto funciona:

command="/usr/lib/ssh/sftp-server"

(Puedes descubrirlo tú mismo mirando la lista de procesos en el servidor ssh)

Aún mejor, podría señalar commandun script de shell que verifique si el cliente ha utilizado el comando correcto. Así (simplificado, no probado):

#!/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

Un script de este tipo también permitiría comprobar los argumentos permitidos para el servidor sftp. Idea similar a la del conocido rrsyncguión.

Para las otras posibles opciones "no-*". Supongo que puedes usar la mayoría de ellos, solo inténtalo. Se explican en man sshd->AUTHORIZED_KEYS FILE FORMAT

información relacionada