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 subsystem
się 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”
Odpowiedzi:
Zgodnie ze
ssh_config(5)
stroną podręcznika , możesz skonfigurować ścieżkę wsshd_config
pliku konfiguracyjnym:Wygląda na to, że możesz po prostu to zrobić:
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.
źródło