La commande sftp prend en charge une option de sous-système (-s) qui permet à l'utilisateur distant de sélectionner l'exécutable du serveur sftp distant, et éventuellement de mettre à niveau vers sudo dans le processus comme ceci;
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
Cette commande diffère les options du client ssh dans ~ / .ssh / config permettant l'utilisation transparente de pubkey et du port personnalisé et des paramètres utilisateur.
Cependant, il subsystem
semble être spécifique à sftp, et donc il n'est pas défini dans le fichier de configuration et il semble qu'il doit être défini comme une option de ligne de commande pour sftp.
Cependant, certains outils encapsulent l'invocation sftp, il est donc impossible de définir l'option de sous-système, et donc bloqué avec l'accès utilisateur.
Existe-t-il un fichier d'options de configuration que je peux utiliser pour définir cela pour openssh sftp en général?
existe-t-il un fichier de configuration pour effectuer la manière dont gnome nautilus appelle le sftp pour son intégration dans le gestionnaire de fichiers?
La mise à jour d' une solution possible hacky mais fonctionnelle est ...
Il s'avère donc qu'il n'y a pas de fichier de configuration évident que sftp utilisera pour les options, j'ai donc fini par modifier un script wrapper générique pour ajouter explicitement l'option pour mes hôtes sélectionnés en le mettant dans mon chemin;
#!/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
Cependant, en fonction de votre fichier sudoers, généralement pour exécuter sudo nécessite un tty, vous devez donc passer l'option "-t" à ssh, et devinez quoi? il n'y a aucune option de configuration pour la commande client ssh documentée qui fonctionne dans les fichiers ssh_config ou ~ / .ssh / config. haha.
J'écris donc un autre script wrapper pour fournir cela ....
#!/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"
cependant, j'ai maintenant du mal à obtenir que sftp utilise mon fichier wrapper ~ / bin / ssh, car il semble être codé en dur dans sftp et contrôlé par une option "-S"
Réponses:
Selon la
ssh_config(5)
page de manuel, vous pouvez configurer le chemin dans lesshd_config
fichier de configuration:Il semble donc que vous puissiez simplement faire ceci:
Cette configuration va évidemment sur le serveur , pas dans la configuration client. Est ce que c'est ce que vous recherchiez? L'inconvénient, évidemment, est que chaque connexion sftp tentera de s'exécuter avec les privilèges root, ce qui interrompra l'accès non root à vos fichiers.
la source