cómo configurar la opción del subsistema sftp -s en un archivo de configuración

11

El comando sftp admite una opción de subsistema (-s) que permite al usuario remoto seleccionar el ejecutable remoto del servidor sftp y, opcionalmente, actualizar a sudo en el proceso de esta manera;

sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa

Este comando difiere de las opciones del cliente ssh en ~ / .ssh / config permitiendo el uso transparente de pubkey y puertos personalizados y configuraciones de usuario.

Sin embargo, subsystemparece ser específico de sftp y, por lo tanto, no está configurado en el archivo de configuración y parece que debe establecerse como una opción de línea de comando para sftp.

Sin embargo, algunas herramientas envuelven la invocación sftp, por lo que es imposible establecer la opción del subsistema y, por lo tanto, se atascan con el acceso del usuario.

¿Hay algún archivo de opciones de configuración que pueda usar para configurar esto para openssh sftp en general?

¿hay algún archivo de configuración para afectar la forma en que gnome nautilus invoca el sftp para su integración del administrador de archivos?


Actualizar posible solución hacky-but-funcionamiento es ...

Entonces resulta que no hay un archivo de configuración obvio que sftp usará para las opciones, así que terminé modificando un script genérico de envoltura para agregar la opción explícitamente para mis hosts seleccionados al poner esto en mi camino;

#!/bin/bash
#  Generic shell wrapper that performs an operation

OPERATION=/usr/bin/sftp
args=("$@")
#the final arg should contain a hostname of the form [user@]host[:path]
case "${args[@]: -1}" in
    myserver.com)
    exec $OPERATION -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" "$args"
    ;;
*)
   exec $OPERATION "$args" 
    ;;
esac

Sin embargo, dependiendo de su archivo sudoers, por lo general, ejecutar sudo requiere un tty, por lo que debe pasar la opción "-t" a ssh, ¿y adivina qué? no hay una opción de configuración para el comando del cliente ssh que esté documentada que funcione en los archivos ssh_config o ~ / .ssh / config. jaja.

Así que escribo otro script de contenedor para proporcionar eso ...

#!/bin/bash
#  Generic shell wrapper that performs an operation

OPERATION=/usr/bin/ssh
args=("$@")
#locating the hostname is not so simple with ssh
exec $OPERATION -tt "$args"

aunque ahora tengo problemas para que el sftp use mi ~ / bin / ssh wrapper file, ya que parece estar codificado en sftp y controlado por una opción "-S"

Tom H
fuente
¿Cuál es tu objetivo? No entiendo ningún beneficio de su comando.
jirib
3
Ejecuto el ssh sin inicios de sesión de usuario root, de acuerdo con nuestra construcción base, por lo que permite a los usuarios de sudo realizar cambios en los archivos con permisos de root a través de herramientas que se integran con gnome gvfs.
Tom H

Respuestas:

2

De acuerdo con la ssh_config(5)página del manual, puede configurar la ruta en el sshd_configarchivo de configuración:

 Subsystem
         Configures an external subsystem (e.g. file transfer daemon).
         Arguments should be a subsystem name and a command (with optional
         arguments) to execute upon subsystem request.

Parece que podrías hacer esto simplemente:

Subsystem sftp /usr/libexec/openssh/sftp-server -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server"

Esta configuración obviamente va en el servidor , no en la configuración del cliente. Esto es lo que estabas buscando? La desventaja, obviamente, es que cada conexión sftp intentará ejecutarse con privilegios de root, por lo que esto interrumpirá el acceso no root a sus archivos.

larsks
fuente
Sí, estaba buscando algo del lado del cliente. Aunque tengo una idea con la que he actualizado la pregunta.
Tom H
Hmm, realmente me gustaría tener una GUI y una respuesta de línea de comando. Creo que larsks está en la línea correcta, pero creo que el comando del subsistema en el servidor remoto debe ser un script que sea capaz de "conocer" los derechos del usuario que intenta iniciar sesión, o que pueda hacerlo con gracia (y silenciosamente) conmutación por error a un inicio de sesión sftp estándar.
Julian Knight
¡O, por supuesto, puedo usar WinSCP en una caja de Windows! Parece tonto aunque no lo hace.
Julian Knight