come impostare l'opzione del sottosistema sftp -s in un file di configurazione


11

Il comando sftp supporta un'opzione del sottosistema (-s) che consente all'utente remoto di selezionare l'eseguibile sftp-server remoto e, facoltativamente, eseguire l'aggiornamento a sudo nel processo in questo modo;

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

Questo comando fa riferimento alle opzioni del client ssh in ~ / .ssh / config consentendo l'uso trasparente di pubkey e le impostazioni personalizzate della porta e dell'utente.

Tuttavia subsystemsembra essere specifico di sftp, e quindi non è impostato nel file di configurazione e sembra che debba essere impostato come un'opzione della riga di comando per sftp.

Tuttavia alcuni strumenti racchiudono l'invocazione sftp, quindi è impossibile impostare l'opzione del sottosistema, e quindi bloccato con l'accesso dell'utente.

Esiste un file di opzioni di configurazione che posso usare per impostare questo per openssh sftp in generale?

c'è qualche file di configurazione che ha effetto sul modo in cui gnome nautilus invoca lo sftp per la sua integrazione con il file manager?


L'aggiornamento possibile soluzione hacky ma funzionante è ...

Quindi risulta che non esiste un file di configurazione ovvio che sftp utilizzerà per le opzioni, quindi ho finito per modificare uno script wrapper generico per aggiungere esplicitamente l'opzione per i miei host selezionati inserendo questo nel mio percorso;

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

Tuttavia, a seconda del file sudoers, di solito per eseguire sudo è necessario un tty, quindi è necessario passare l'opzione "-t" a ssh e indovinare cosa? non esiste alcuna opzione di configurazione per il comando client ssh documentato che funziona nei file ssh_config o ~ / .ssh / config. haha.

Quindi scrivo un altro script wrapper per fornire che ....

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

anche se ora ho problemi a far sì che sftp usi il mio file wrapper ~ / bin / ssh, poiché sembra essere codificato in sftp e controllato da un'opzione "-S"


Qual è il tuo obiettivo? Non capisco alcun vantaggio del tuo comando.
jirib,

3
Eseguo ssh senza accessi utente root, secondo la nostra build di base, quindi consente agli utenti sudo di apportare modifiche ai file con permessi di root tramite strumenti che si integrano con gnfs gvfs.
Tom H,

Risposte:


2

Secondo la ssh_config(5)pagina man, è possibile configurare il percorso nel sshd_configfile di configurazione:

 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.

Quindi sembra che tu possa semplicemente fare questo:

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

Questa configurazione ovviamente va sul server , non nella configurazione client. È questo quello che stavi cercando? Il rovescio della medaglia, ovviamente, è che ogni connessione sftp tenterà di funzionare con i privilegi di root, quindi questo interromperà l'accesso non root ai tuoi file.


sì, stavo cercando qualcosa sul lato client. Anche se ho un'idea con cui ho aggiornato la domanda.
Tom H,

Mi piacerebbe davvero avere una GUI e una risposta da riga di comando. Penso che Larsks sia sulla linea giusta, ma penso che il comando del sottosistema sul server remoto debba essere uno script che sia in grado di "conoscere" i diritti dell'utente che tenta di accedere o che sia in grado di grazia (e silenziosamente) fail-back ad un login sftp standard.
Julian Knight,

O, ovviamente, posso semplicemente usare WinSCP su una scatola di Windows !! Sembra sciocco però no.
Julian Knight,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.