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, subsystem
parece 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"
Respuestas:
De acuerdo con la
ssh_config(5)
página del manual, puede configurar la ruta en elsshd_config
archivo de configuración:Parece que podrías hacer esto simplemente:
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.
fuente