2

У меня есть удаленный сервер, на котором я могу использовать SSH. Я хочу смонтировать папку, которая находится на этом сервере, на мой локальный рабочий стол Linux. Затем я хочу иметь возможность читать / записывать файлы из моего текстового редактора. Как мне это сделать?

Одно ВАЖНОЕ требование:

  • Удаленный сервер не разрешает вход в систему root
  • Папка на удаленном сервере является только корневой

Обычно, когда я ssh, я вхожу в систему как обычный пользователь, а затем выполняю команду "su" для выполнения действий root. Как бы я сделал это с sshfs?

Сервер: CentOS 6.5
Рабочий стол: openSUSE 13.1

2 ответа2

6

Существует несколько способов сделать это. Другие ответы, которые предлагают альтернативы, не являются неправильными ; они просто разные. Я собираюсь объяснить одну конкретную возможность: sshfs .

Вы можете использовать SSHFS, которая является файловой системой в пользовательском пространстве, которая отображает каталог на локальный путь через SSH. Это должно работать практически на любой современной операционной системе GNU/Linux с ядром Linux серии 2.6 или серии 3.x. Возможно, вам придется скомпилировать компоненты sshfs или libfuse из исходного кода, если их нет в репозитории вашего дистрибутива.

Поскольку вы не упомянули, какой дистрибутив вы используете, я не могу предоставить более конкретные инструкции по установке.

Пример использования:

$ sshfs user@server.com: ~/destpath

сопоставляет домашнюю папку user на server.com с ~/destpath на локальной машине.

1

Как @allquixotic заявил в своем ответе, вы можете использовать SSHFS для монтирования удаленного пути в локальной папке. Чтобы добиться того, что вы просили, вам нужно решение, подобное этому.

Поскольку SSHFS использует протокол передачи файлов SSH в качестве основы, это означает, что сервер создается при входе в систему в качестве пользователя. Но это также означает, что вы не можете напрямую выполнить su , потому что оболочка не создается.

Чтобы обойти это, запустите сервер от имени root, и вы можете сделать это с -o sftp_server как указано в документации. Как это:

sshfs username@host:remote_path local_mount_path -o sftp_server="/usr/bin/sudo /usr/libexec/openssh/sftp-server"

Однако, поскольку sudo требует аутентификации (очевидно), вам нужен способ аутентификации. Вы можете использовать две разные альтернативы:

  • Используйте файл sudoers, чтобы добавить возможность sftp-server вашим пользователем без запроса пароля. Посмотрите, как это сделать здесь (не важно, для Ubuntu).
  • Запустите sudo с SSH, а затем выполните команду sshfs . Это позволит выполнить sudo без пароля, поскольку вы уже выполнили его за мгновение до этого. Это обновит тайм-аут на 5 минут:

    ssh username@host sudo -v
    

Вы также можете попытаться передать пароль напрямую в sudo , но я не рекомендую это делать, поскольку он небезопасен и, вероятно , не будет работать, поскольку сервер не порождается оболочкой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .