So legen Sie die Option sftp -s subsystem in einer Konfigurationsdatei fest

11

Der Befehl sftp unterstützt eine Subsystemoption (-s), mit der der Remotebenutzer die ausführbare Datei des Remote-SFTP-Servers auswählen und dabei optional auf sudo aktualisieren kann.

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

Dieser Befehl beschränkt sich auf die ssh-Client-Optionen in ~ / .ssh / config und ermöglicht die transparente Verwendung von Pubkey- und benutzerdefinierten Port- und Benutzereinstellungen.

Es subsystemscheint jedoch sftp-spezifisch zu sein, und daher wird es nicht in der Konfigurationsdatei festgelegt, und es scheint, dass es als Befehlszeilenoption für sftp festgelegt werden muss.

Einige Tools schließen den SFTP-Aufruf jedoch so ein, dass es unmöglich ist, die Subsystemoption festzulegen, und bleiben daher beim Benutzerzugriff.

Gibt es eine Konfigurationsoptionsdatei, mit der ich diese für openssh sftp allgemein festlegen kann?

Gibt es eine Konfigurationsdatei, die die Art und Weise beeinflusst, wie gnome nautilus das SFTP für die Integration des Dateimanagers aufruft?


Update mögliche hacky-aber-funktionierende Lösung ist ...

Es stellt sich also heraus, dass es keine offensichtliche Konfigurationsdatei gibt, die sftp für Optionen verwendet. Daher habe ich ein generisches Wrapper-Skript geändert, um die Option explizit für meine ausgewählten Hosts hinzuzufügen, indem ich diese in meinen Pfad eingefügt habe.

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

Jedoch abhängig von Ihrer sudoers - Datei, in der Regel laufen sudo erfordert eine tty, so dass Sie die „-t“ Option ssh passieren müssen, und wissen Sie was? Es gibt keine Konfigurationsoption für den dokumentierten Befehl ssh client, der in den Dateien ssh_config oder ~ / .ssh / config funktioniert. Haha.

Also schreibe ich ein anderes Wrapper-Skript, um das bereitzustellen ...

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

obwohl ich jetzt Probleme habe, das SFTP dazu zu bringen, meine ~ / bin / ssh-Wrapper-Datei zu verwenden, da es fest in SFTP codiert zu sein scheint und durch eine Option "-S" gesteuert wird.

Tom H.
quelle
Was ist dein Ziel? Ich verstehe keinen Nutzen Ihres Befehls.
Jirib
3
Ich führe das SSH ohne Root-Benutzeranmeldungen gemäß unserem Basis-Build aus, sodass Sudo-Benutzer Änderungen an Dateien mit Root-Berechtigungen über Tools vornehmen können, die in gnome gvfs integriert sind.
Tom H

Antworten:

2

Entsprechend der ssh_config(5)Manpage können Sie den Pfad in der sshd_configKonfigurationsdatei konfigurieren:

 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.

Es sieht also so aus, als könnten Sie dies einfach tun:

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

Diese Konfiguration erfolgt offensichtlich auf dem Server , nicht in der Client-Konfiguration. Ist es das, wonach du gesucht hast? Der Nachteil ist natürlich, dass jede SFTP-Verbindung versucht, mit Root-Rechten ausgeführt zu werden, sodass der Nicht-Root-Zugriff auf Ihre Dateien unterbrochen wird.

Larsks
quelle
Ja, ich habe nach etwas auf der Kundenseite gesucht. Obwohl ich eine Idee habe, mit der ich die Frage aktualisiert habe.
Tom H
Hmm, ich hätte wirklich gerne eine GUI sowie eine Befehlszeilenantwort. Ich denke, dass Larsks in den richtigen Zeilen ist, aber ich denke, dass der Subsystembefehl auf dem Remote-Server ein Skript sein muss, das selbst entweder die Rechte des Benutzers "kennen" kann, der versucht, sich anzumelden, oder der in der Lage ist, ordnungsgemäß (und) stillschweigend) Failback auf ein Standard-SFTP-Login.
Julian Knight
Oder natürlich kann ich WinSCP einfach auf einer Windows-Box verwenden !! Scheint dumm, nicht wahr?
Julian Knight