bir yapılandırma dosyasında sftp -s alt sistemi seçeneği nasıl ayarlanır


11

Sftp komutu, uzak kullanıcının uzak sftp sunucusu yürütülebilir dosyasını seçmesine ve isteğe bağlı olarak işlemdeki sudo'ya yükseltmesine olanak tanıyan bir alt sistem seçeneğini (-s) destekler;

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

Bu komut ~ / .ssh / config içindeki ssh istemci seçeneklerini tanımlar ve pubkey ile özel bağlantı noktası ve kullanıcı ayarlarının saydam kullanımına izin verir.

Ancak subsystem, sftp'ye özgü olduğu ve bu nedenle yapılandırma dosyasında ayarlanmadığı ve sftp için bir komut satırı seçeneği olarak ayarlanması gerektiği görülmektedir.

Bununla birlikte, bazı araçlar sftp invocation'ı sarar, böylece alt sistem seçeneğini ayarlamak imkansızdır ve bu nedenle kullanıcı erişimi ile sıkışmış olur.

Bunu genel olarak openssh sftp için ayarlamak için kullanabileceğim bazı yapılandırma seçeneği dosyası var mı?

gnome nautilus'un dosya yöneticisi entegrasyonu için sftp'yi çağırma şeklini etkileyen bazı yapılandırma dosyaları var mı?


Olası hacky ama işlevsel çözümü güncelleme ...

Bu nedenle, sftp'nin seçenekler için kullanacağı hiçbir açık yapılandırma dosyası olmadığı ortaya çıktı, bu yüzden bu yolu yoluma koyarak seçili ana makinelerim için seçeneği açıkça eklemek için genel bir sarmalayıcı komut dosyasını değiştirdim;

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

Ancak sudoers dosyanıza bağlı olarak, genellikle sudo çalıştırmak için bir tty gerekir, bu nedenle ssh için "-t" seçeneğini geçmeniz ve ne olduğunu tahmin etmeniz gerekir? ssh_config veya ~ / .ssh / config dosyalarında çalışan belgelenmiş ssh istemci komutu için yapılandırma seçeneği yoktur. haha.

Bunu sağlamak için başka bir sarıcı komut dosyası yazıyorum ....

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

Her ne kadar, şimdi sftp içine sftp sabit kodlanmış ve bir seçenek "-S" tarafından kontrol gibi görünüyor, ~ / bin / ssh sarmalayıcı dosyasını kullanmak için sftp almakta sorun yaşıyorum


Amacın ne? Senin emrinin hiçbir faydasını anlamıyorum.
jirib

3
Ssh'yi temel derlememize göre kök kullanıcı girişi olmadan çalıştırıyorum, bu nedenle sudo kullanıcılarının gnome gvfs ile entegre araçlar aracılığıyla kök izinlerine sahip dosyalarda değişiklik yapmasına izin veriyor.
Tom H

Yanıtlar:


2

ssh_config(5)Man sayfasına göre , sshd_configyapılandırma dosyasındaki yolu yapılandırabilirsiniz:

 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.

Yani, bunu basit bir şekilde yapabilirmişsiniz gibi görünüyor:

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

Bu yapılandırma açıkça istemci yapılandırmasında değil , sunucuda devam eder . Aradığın şey bu mu? Dezavantajı, her sftp bağlantısının kök ayrıcalıklarıyla çalışmaya çalışacağı, böylece dosyalarınıza root olmayan erişimi bozacağıdır.


evet, müşteri tarafı bir şey arıyordum. Soruyu güncellediğim bir fikrim olmasına rağmen.
Tom H

Hmm, gerçekten bir GUI ve komut satırı cevabı almak istiyorum. Ben larsks doğru satırlarda olduğunu düşünüyorum ama ben uzak sunucudaki alt sistem komutunun kendisi ya giriş yapmaya çalışan kullanıcının haklarını "bilmek" ya da zarif (ve ( sessizce) standart bir sftp girişine geri dönme.
Julian Knight

Veya, tabii ki, ben sadece bir Windows kutusunda WinSCP kullanabilirsiniz !! Daft görünüyor ama öyle değil.
Julian Knight
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.