jak ustawić opcję podsystemu sftp -s w pliku konfiguracyjnym


11

Komenda sftp obsługuje opcję podsystemu (-s), która pozwala użytkownikowi zdalnemu wybrać plik wykonywalny zdalnego serwera sftp i opcjonalnie zaktualizować go do sudo w ten sposób;

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

To polecenie odsyła do opcji klienta ssh w ~ / .ssh / config, umożliwiając przejrzyste użycie klucza pub oraz niestandardowych ustawień portu i użytkownika.

Wydaje subsystemsię jednak, że jest specyficzny dla sftp, a zatem nie jest ustawiony w pliku konfiguracyjnym i wygląda na to, że należy go ustawić jako opcję wiersza poleceń dla sftp.

Jednak niektóre narzędzia owijają wywołanie sftp, więc nie można ustawić opcji podsystemu, a zatem nie można uzyskać dostępu użytkownika.

Czy jest jakiś plik opcji konfiguracji, którego można użyć, aby ustawić go ogólnie dla openssh sftp?

czy jest jakiś plik konfiguracyjny wpływający na sposób, w jaki gnome nautilus wywołuje sftp w celu integracji menedżera plików?


Zaktualizuj możliwe hacky, ale działające rozwiązanie to ...

Okazuje się więc, że nie ma oczywistego pliku konfiguracyjnego, który sftp użyłby dla opcji, więc ostatecznie zmodyfikowałem ogólny skrypt opakowania, aby dodać opcję jawnie dla moich wybranych hostów, umieszczając to na mojej ścieżce;

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

Jednak w zależności od pliku sudoers, zwykle uruchomienie sudo wymaga tty, więc musisz przekazać ssh opcję „-t” i zgadnij co? nie ma opcji konfiguracji dla polecenia klienta ssh, które jest udokumentowane i działa w plikach ssh_config lub ~ / .ssh / config. ha ha.

Piszę więc kolejny skrypt otoki, aby zapewnić, że ...

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

chociaż mam teraz problemy z przekonaniem sftp do użycia mojego pliku opakowującego ~ / bin / ssh, ponieważ wygląda na to, że jest zakodowany na stałe w sftp i kontrolowany przez opcję „-S”


Jaki jest twój cel Nie rozumiem żadnej korzyści z twojego rozkazu.
jirib

3
Uruchamiam ssh bez logowania użytkownika root, zgodnie z naszą podstawową kompilacją, dzięki czemu użytkownicy sudo mogą wprowadzać zmiany w plikach z uprawnieniami root za pomocą narzędzi integrujących się z gnome gvfs.
Tom H

Odpowiedzi:


2

Zgodnie ze ssh_config(5)stroną podręcznika , możesz skonfigurować ścieżkę w sshd_configpliku konfiguracyjnym:

 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.

Wygląda na to, że możesz po prostu to zrobić:

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

Ta konfiguracja oczywiście dotyczy serwera , a nie konfiguracji klienta. Czy tego właśnie szukałeś? Wadą jest oczywiście to, że każde połączenie sftp będzie próbowało uruchomić się z uprawnieniami roota, więc spowoduje to przerwanie dostępu użytkownika do plików innych niż root.


tak, szukałem czegoś po stronie klienta. Chociaż mam pomysł, którym zaktualizowałem pytanie.
Tom H

Hmm, naprawdę chciałbym mieć GUI oraz odpowiedź z wiersza poleceń. Wydaje mi się, że Larsk jest na dobrej linii, ale wydaje mi się, że polecenie podsystemu na zdalnym serwerze musi być skryptem, który sam może albo „znać” prawa użytkownika próbującego się zalogować, albo może z wdziękiem (i po cichu) powrót do standardowego logowania sftp.
Julian Knight

Lub, oczywiście, mogę po prostu użyć WinSCP na Windowsie !! Wydaje się głupi, prawda?
Julian Knight
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.