як встановити параметр підсистеми sftp -s у файлі конфігурації


11

Команда 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"


Яка ваша мета? Я не розумію жодної користі від вашої команди.
джибір

3
Я запускаю ssh без входу користувачів root, відповідно до нашої базової збірки, тому він дозволяє користувачам sudo вносити зміни до файлів з кореневими дозволами за допомогою інструментів, що інтегруються з gnome gvfs.
Том Н

Відповіді:


2

Відповідно до ssh_config(5)довідкової сторінки, ви можете налаштувати шлях у sshd_configфайлі конфігурації:

 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.

Так виглядає, ніби ви могли це зробити просто:

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

Ця конфігурація, очевидно, працює на сервері , а не в конфігурації клієнта. Це те, що ви шукали? Мінус, очевидно, полягає в тому, що кожне з'єднання sftp намагатиметься запустити з привілеями root, тому це порушить некоріозний доступ до ваших файлів.


так, я шукав щось із боку клієнта. Хоча у мене є ідея, з якою я оновив питання.
Том Н

Хм, мені б дуже хотілося відповісти на графічний інтерфейс, а також на відповідь командного рядка. Я думаю, що larsks знаходиться в правильних рядках, але я вважаю, що команда підсистеми на віддаленому сервері повинна бути сценарієм, який сам здатний або "знати" права користувача, що намагається ввійти, або вміє витончено (і мовчки) відмова до стандартного входу в sftp.
Джуліан Найт

Або, звичайно, я можу просто використовувати WinSCP на вікні Windows !! Здається, що хитро, хоча це не так.
Джуліан Найт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.