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 subsystem
sembra 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"