cara mengatur opsi subsistem sftp -s dalam file konfigurasi

11

Perintah sftp mendukung opsi subsistem (-s) yang memungkinkan pengguna jarak jauh untuk memilih server sftp-server yang dapat dieksekusi, dan secara opsional memutakhirkan ke sudo dalam proses seperti itu;

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

Perintah ini merujuk pada opsi ssh client di ~ / .ssh / config yang memungkinkan penggunaan pubkey dan port kustom serta pengaturan pengguna secara transparan.

Namun subsystemtampaknya khusus sftp, dan karenanya tidak diatur dalam file konfigurasi dan tampaknya harus ditetapkan sebagai opsi baris perintah untuk sftp.

Namun beberapa alat membungkus permintaan sftp sehingga tidak mungkin untuk mengatur opsi subsistem, dan karenanya terjebak dengan akses pengguna.

Apakah ada beberapa file opsi konfigurasi yang dapat saya gunakan untuk mengatur ini untuk openssh sftp secara umum?

apakah ada beberapa file konfigurasi yang memengaruhi cara gnome nautilus memanggil sftp untuk integrasi manajer file?


Perbarui kemungkinan solusi peretasan yang berfungsi adalah ...

Jadi ternyata tidak ada file konfigurasi yang sftp akan digunakan untuk opsi, jadi saya akhirnya memodifikasi skrip wrapper generik untuk menambahkan opsi secara eksplisit untuk host yang saya pilih dengan meletakkan ini di jalur saya;

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

Namun tergantung pada file sudoers Anda, biasanya untuk menjalankan sudo memerlukan tty, jadi Anda harus memberikan opsi "-t" ke ssh, dan coba tebak? tidak ada opsi konfigurasi untuk perintah ssh client yang didokumentasikan yang berfungsi di file ssh_config atau ~ / .ssh / config. ha ha.

Jadi saya menulis skrip pembungkus lain untuk memberikan ....

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

walaupun, saya sekarang kesulitan mendapatkan sftp untuk menggunakan file wrapper ~ / bin / ssh saya, karena tampaknya sulit dikodekan ke dalam sftp dan dikendalikan oleh opsi "-S"

Tom H
sumber
Apa tujuanmu? Saya tidak mengerti manfaat perintah Anda.
jirib
3
Saya menjalankan ssh tanpa login pengguna root, sesuai dengan build dasar kami, sehingga memungkinkan pengguna sudo untuk membuat perubahan pada file dengan izin root melalui alat yang terintegrasi dengan gnome gvfs.
Tom H

Jawaban:

2

Menurut ssh_config(5)halaman manual, Anda dapat mengonfigurasi jalur di sshd_configfile konfigurasi:

 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.

Jadi sepertinya Anda bisa melakukan ini:

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

Konfigurasi ini jelas berjalan di server , bukan di konfigurasi klien. Apakah ini yang Anda cari? Kelemahannya, jelas, adalah bahwa setiap koneksi sftp akan mencoba untuk berjalan dengan hak akses root, jadi ini akan memutus akses non-root ke file Anda.

larsks
sumber
ya, saya sedang mencari sesuatu sisi klien. Meskipun saya punya ide yang saya memperbarui pertanyaan dengan.
Tom H
Hmm, saya benar-benar ingin memiliki GUI serta jawaban baris perintah. Saya berpikir bahwa larsks ada di jalur yang benar tetapi saya berpikir bahwa perintah subsistem pada server jarak jauh harus berupa skrip yang dengan sendirinya dapat "mengetahui" hak-hak pengguna yang mencoba masuk, atau yang mampu dengan anggun (dan diam-diam) gagal kembali ke login sftp standar.
Julian Knight
Atau, tentu saja, saya bisa menggunakan WinSCP pada kotak Windows !! Tampaknya bodoh bukan.
Julian Knight