Команда sftp поддерживает опцию подсистемы (-s), которая позволяет удаленному пользователю выбирать исполняемый файл удаленного sftp-сервера и, при необходимости, обновляться до sudo в процессе;
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
Эта команда относится к параметрам клиента ssh в ~ / .ssh / config, что позволяет прозрачно использовать параметры pubkey, пользовательский порт и пользовательские настройки.
Однако, subsystem
похоже, что это специфично для sftp, и, следовательно, он не задан в файле конфигурации, и кажется, что его нужно установить в качестве параметра командной строки для sftp.
Однако некоторые инструменты обертывают вызов sftp, поэтому невозможно установить опцию подсистемы и, следовательно, застрять в доступе пользователя.
Есть ли какой-нибудь файл опций конфигурации, который я могу использовать, чтобы установить его для openssh sftp в целом?
Есть ли какой-нибудь конфигурационный файл, позволяющий gnome nautilus вызывать sftp для интеграции с файловым менеджером?
Обновление возможного хаки-но-работающего решения ...
Таким образом, оказалось, что не существует очевидного файла конфигурации, который sftp будет использовать для опций, поэтому я закончил тем, что модифицировал универсальный скрипт-обертку, чтобы явно добавить опцию для выбранных хостов, поместив это в мой путь;
#!/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
Однако, в зависимости от вашего файла sudoers, обычно для запуска sudo требуется tty, поэтому вы должны передать опцию "-t" в ssh, и угадайте, что? нет заданного параметра конфигурации для команды клиента ssh, которая работает в файлах ssh_config или ~ / .ssh / config. ха - ха.
Поэтому я пишу другой скрипт-обертку, чтобы обеспечить это ....
#!/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"
хотя теперь у меня возникают проблемы с использованием sftp моего файла-оболочки ~ / bin / ssh, так как он, похоже, жестко запрограммирован в sftp и управляется опцией "-S"