Поиск по сайту:

Как использовать монтирование SSHFS с удаленными каталогами через SSH


Работать с удаленным каталогом, как с локальным, удобнее, согласны? Вместо того, чтобы отправлять и извлекать файлы удаленно с помощью SCP, SFTP или FTP, что, если бы вы могли управлять этими файлами напрямую? К счастью для вас, монтирование SSHFS — быстрое решение этой дилеммы.

Из этого туториала вы узнаете, как использовать монтирование SSHFS, чтобы получить доступ к содержимому удаленного каталога на локальном компьютере. Независимо от того, являетесь ли вы пользователем Windows или Linux, это руководство поможет вам.

Конкретный пример использования в этом руководстве демонстрирует обновление содержимого веб-сайта в смонтированном каталоге SSHFS удаленного сервера. Но общая концепция должна применяться к вашей конкретной ситуации и не ограничиваться только веб-серверами.

Предварительные условия

Этот урок будет практической демонстрацией. Если вы хотите следовать инструкциям, убедитесь, что у вас есть следующее:

  • Веб-сервер Linux. В этом руководстве будет использоваться Fedora 35 с именем wbserver с установленным HTTP-сервером Apache. Этот сервер содержит удаленный каталог, который будет целью монтирования SSHFS.
  • Клиент Linux. В этом руководстве будет использоваться клиент Fedora 35 с именем fedora.
  • Клиент Windows (Windows 7 и более поздние версии). В этом руководстве используется клиент Windows 10 с именем win10pc.

Подготовка удаленного каталога

В этом руководстве мы будем работать с удаленным каталогом на сервере wbserver, который называется /var/www/html. По умолчанию доступ к этой папке имеет только учетная запись root. Поскольку вы не будете использовать корневую учетную запись сервера, вместо этого вы должны предоставить назначенной учетной записи пользователя разрешение на доступ к каталогу.

В этом примере назначенная учетная запись пользователя для монтирования и доступа к монтированию SSHFS — adm1. Выполните следующие действия, чтобы предоставить adm1 необходимые разрешения для /var/www/html на wbserver.

1. Войдите в wbserver, используя предпочитаемый вами SSH-клиент.

2. Затем выполните приведенную ниже команду, чтобы предоставить пользователю adm1 права полного доступа (rwx) к папке /var/www/html.

sudo setfacl -m u:adm1:rwx /var/www/html

3. Наконец, подтвердите правильность разрешения, выполнив приведенную ниже команду.

sudo getfacl -a /var/www/html

Как вы можете видеть ниже, adm1 теперь имеет доступ для чтения и записи к папке.

Использование SSHFS-монтирования в Linux

SSHFS — это в первую очередь инструмент Linux, и вам нужно всего лишь ввести несколько команд, чтобы смонтировать удаленный каталог на вашем компьютере. Установка пакетов для включения SSHFS так же удобна, как и установка других пакетов в Linux через менеджер пакетов вашего дистрибутива.

Установка SSHFS и монтирование удаленного каталога

Выполните следующие шаги, чтобы установить пакет монтирования SSHFS и смонтировать удаленный каталог по локальному пути.

1. Войдите в свой клиент Linux через SSH или рабочий стол, в зависимости от вашей среды.

2. Запустите следующую команду, чтобы установить пакет Fuse-sshfs с помощью менеджера пакетов.

Примечание. В дистрибутивах Linux на основе Debian имя пакета — sshfs.

sudo dnf install -y fuse-sshfs

Менеджер пакетов также устанавливает зависимости, которых еще нет на вашем компьютере. А поскольку размер каждого пакета не превышает 100 КБ, загрузка и установка заняли всего несколько секунд.

3. Затем создайте новую папку в своем домашнем каталоге с именем mnt. Эта новая папка является точкой монтирования удаленного каталога.

mkdir ~/mnt

4. После создания точки монтирования выполните приведенную ниже команду sshfs.

Эта команда подключит удаленный каталог веб-сервера (wbserver) (/var/www/html) к локальной точке монтирования (~/mnt), которую вы создали при использовании учетных данных adm1 для доступа.

sshfs adm1@wbserver:/var/www/html ~/mnt

Если SSH-сервер не прослушивает порт 22 по умолчанию, необходимо указать ключ -o port <номер> с помощью команды sshfs. Например, если удаленный сервер прослушивает порт 2222, команда будет выглядеть так: sshfs -o порт 2222.

5. Если вы подключаетесь к серверу впервые, подтвердите соединение, нажав Y в командной строке — введите пароль учетной записи и нажмите Enter. .

6. Наконец, подтвердите, что вы успешно смонтировали удаленный каталог, выполнив приведенную ниже команду.

findmnt

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

Включение автомонтирования при загрузке

Хотя вы успешно смонтировали удаленный каталог, помните, что этот статус монтирования не является постоянным. Перезагрузка компьютера не приведет к автоматическому подключению удаленного каталога.

Но вы можете обеспечить, чтобы монтирование SSHFS выдерживало перезагрузку компьютера, отредактировав файл /etc/fstab и включив аутентификацию на основе ключей для учетной записи adm1. Включение аутентификации на основе ключей SSH гарантирует, что монтирование SSHFS будет полностью автоматическим (без запроса пароля).

1. В клиенте Linux сгенерируйте новую пару ключей SSH, выполнив приведенную ниже команду.

ssh-keygen

В файле Enter, в котором нужно сохранить приглашение ключа, введите имя файла ключа и нажмите Enter. В этом примере имя ключевого файла для сохранения — /home/user1/.ssh/adm1@wbserver.

Оставьте парольную фразу пустой и дважды нажмите Enter. На снимке экрана ниже показан результат создания пары ключей.

2. Теперь скопируйте ключ на веб-сервер. Приведенная ниже команда устанавливает ранее сгенерированный вами ключ (/home/user1/.ssh/adm1@wbserver) в учетную запись adm1 на wbserver.

ssh-copy-id -i /home/user1/.ssh/adm1@wbserver adm1@wbserver

Введите пароль для adm1@wbserver в командной строке и нажмите Enter. Как вы можете видеть ниже, команда успешно установила ключ на сервер.

3. Подключитесь к wbserver по SSH, используя пару ключей, чтобы убедиться, что вход на основе ключей работает.

ssh -i /home/user1/.ssh/adm1@wbserver adm1@wbserver

В результате вход в систему должен пройти успешно без запроса пароля. Введите exit и нажмите Enter, чтобы выйти из wbserver.

4. Теперь, когда вы настроили аутентификацию на основе ключей SSH для учетной записи пользователя SSHFS, вы готовы настроить постоянное монтирование SSHFS.

Откройте файл /etc/fstab в текстовом редакторе.

sudo nano /etc/fstab

5. Добавьте приведенный ниже код в конец файла /etc/fstab. Обязательно измените значениеidentfile= на путь к файлу ключей SSH.

adm1@wbserver:/var/www/html /home/user1/mnt fuse.sshfs identityfile=/home/user1/.ssh/adm1@wbserver,allow_other,_netdev 0 0

6. После редактирования сохраните файл, закройте текстовый редактор и перезагрузите компьютер. Как вы можете видеть ниже, монтирование SSHFS снова доступно после перезагрузки.

Тестирование монтирования SSHFS

Итак, вы подключили удаленный каталог к своему локальному компьютеру. Теперь вопрос: «Работает ли это? ». Самый быстрый тест для подтверждения — создать новый файл и сохранить его в точке монтирования SSHFS. Созданный вами файл должен появиться на сервере.

По умолчанию папка /var/www/html на веб-сервере пуста. При доступе к веб-сайту, размещенному на https://wbserver, вы увидите только тестовую страницу по умолчанию, как показано на снимке экрана ниже.

В этом примере вы создадите новую домашнюю страницу и подтвердите, что веб-сервер отображает эту новую страницу.

1. Переключите рабочий каталог на ~/mnt, точку монтирования SSHFS.

cd ~/mnt

2. Выполните команду touch, чтобы создать файл index.html, и откройте его в текстовом редакторе.

touch index.html && nano index.html

3. Теперь заполните файл index.html приведенным ниже HTML-кодом, сохраните файл и выйдите из редактора.

<h1>Welcome</h1>
<h2>I was put here over SSH by SSHFS</h2>

На снимке экрана ниже показано ожидаемое содержимое файла index.html.

4. Наконец, снова откройте URL-адрес веб-сайта в веб-браузере. Веб-сервер должен подобрать и отобразить новую домашнюю страницу, как вы можете видеть ниже.

Поздравляем! Теперь вы успешно реализовали монтирование SSHFS на своем компьютере с Linux. Вам не нужно загружать или скачивать удаленные файлы, чтобы внести изменения вручную.

Размонтирование удаленного каталога

Предположим, что вам больше не нужен доступ к удаленному каталогу через монтирование SSHFS и вы хотите его размонтировать, выполните одну из приведенных ниже команд.

Запустите приведенную ниже команду, если вы смонтировали удаленный каталог в интерактивном режиме с помощью инструмента sshfs.

fusermount -u /home/user1/mnt

Если вы автоматически смонтировали удаленный каталог в fstab, вместо этого выполните команду ниже. Кроме того, необходимо удалить запись автомонтирования SSHFS в fstab. В противном случае удаленный каталог снова автоматически смонтируется после перезагрузки.

sudo umount /home/user1/mnt

Использование SSHFS-монтирования в Windows

Компьютеры Windows могут сопоставлять сетевые расположения как локальные диски, например FTP-сайты, общие сетевые ресурсы и библиотеки SharePoint. Вам будет приятно узнать, что вы также можете добавить диски для монтирования SSHFS в Windows, установив программу под названием SSHFS-Win — порт SSHFS для Linux.

Установка WinFsp и SSHFS-Win

Для работы SSHFS-Win требуется WinFsp, поскольку он обеспечивает базовую функциональность FUSE. Следуйте инструкциям ниже, чтобы установить WinSfp и SSHFS-Win.

1. Откройте браузер на клиенте Windows и загрузите последнюю версию WinSfp (v1.10) и SSHFS-Win (v3.5.20357).

2. Найдите загруженные вами установщики и сначала запустите установщик WinSfp.

3. Нажмите «Далее» на странице приветствия мастера установки WinFsp 2022.

4. Выберите все функции и нажмите «Далее».

5. Нажмите «Установить» на странице «Все готово к установке WinFsp 2022».

6. После установки WinFsp нажмите «Готово».

7. Далее запустите установщик SSHFS-Win.

8. Нажмите «Далее» на первом экране, как показано ниже, чтобы начать процесс установки.

9. Нажмите «Далее» на странице «Выборочная установка».

10. На странице «Все готово к установке SSHFS-Win» нажмите «Установить».

11. Наконец, нажмите «Готово», чтобы завершить работу и выйти из мастера установки.

Понимание пути SSHFS Синтаксис

Прежде чем сопоставить удаленный каталог с помощью монтирования SSHFS, просмотрите список ниже, чтобы понять, как SSHFS-Win интерпретирует удаленные пути.

"\PREFIX\\REMUSER@HOST[!PORT][\\PATH]
  • REMUSER — это удаленный пользователь, чьи учетные данные вы будете использовать для аутентификации на удаленном сервере.
  • HOST — имя хоста или IP-адрес удаленного сервера.
  • PORT — порт прослушивания SSH удаленного сервера. Это значение является необязательным, по умолчанию используется порт 22.
  • PATH — это удаленный путь относительно PREFIX. Различные префиксы:

    • sshfs — соответствует пути относительно домашнего каталога пользователя (т. е. HOST:~REMUSER/PATH).
    • sshfs.r – соответствует пути относительно корневого каталога хоста (т. е. HOST:/PATH).
    • sshfs.k — отображает путь относительно домашнего каталога пользователя (т. е. HOST:~REMUSER/PATH) и использует аутентификацию на основе ключей SSH. Этот префикс использует ключ в %USERPROFILE%/.ssh/id_rsa для аутентификации.
    • sshfs.kr – соответствует пути относительно корневого каталога хоста (т. е. HOST:/PATH) и использует ключ в %USERPROFILE%/.ssh. /id_rsa для аутентификации.

Монтирование и отключение удаленного каталога с помощью проводника Windows.

Один из способов подключения сетевого диска в Windows — через проводник Windows. При использовании этого метода вам не нужно запускать какие-либо команды, и вы будете выполнять каждый шаг в графическом интерфейсе в стиле мастера.

1. Откройте окно проводника, нажмите Этот компьютер —> Компьютер —> Подключить сетевой диск.

2. Выберите букву диска и введите указанный ниже путь в поле «Папка», чтобы смонтировать папку \var\www\html.

\\sshfs.r\adm1@wbserver\var\www\html

Оставьте флажок «Повторно подключаться при входе» отмеченным и нажмите «Готово».

3. Введите пароль учетной записи, установите флажок «Запомнить меня» и нажмите «ОК».

Теперь вы сопоставили монтирование SSHFS с буквой диска. А поскольку вы включили параметры «Повторное подключение при входе» и «Запомнить меня», Windows повторно подключит монтирование SSHFS после перезагрузки компьютера.

4. Теперь вы можете управлять файлами в удаленном каталоге. Но если подключенный диск вам больше не нужен и вы хотите его удалить, щелкните правой кнопкой мыши монтирование SSHFS и выберите «Отключить».

Монтирование и размонтирование удаленного каталога с помощью командной строки

Команда net use — это еще один способ сопоставить удаленный каталог в Windows. Сопоставление дисков монтирования SSHFS через командную строку полезно для создания сценариев и автоматизации.

Чтобы смонтировать удаленный каталог, откройте командную строку или PowerShell и выполните приведенную ниже команду, чтобы сопоставить удаленный каталог \\var\\www\\html с диском Z локального компьютера. >. Обязательно замените значение PASSWORD паролем удаленного пользователя.

net use Z: "\sshfs.r\\adm1@wbserver\\var\\www\\html PASSWORD /user:adm1

Чтобы удалить монтируемый диск SSHFS с помощью командной строки, удалит сопоставление с диском Z:, выполнив приведенную ниже команду.

net use Z: /delete

Тестирование монтирования SSHFS

Теперь, когда у вас есть доступ к локально подключенному сетевому диску, вы можете управлять файлами в удаленном каталоге, как и любыми другими локальными файлами. В этом примере вы обновите домашнюю страницу веб-сайта непосредственно с подключенного диска SSHFS.

1. Откройте проводник и перейдите к подключенному диску.

2. Откройте файл index.html в текстовом редакторе, например в блокноте. Если файл не существует, сначала создайте его.

3. Скопируйте приведенный ниже HTML-код, вставьте его в свой index.html и сохраните файл.

<h1>Welcome</h1>
<h2>I was put here over SSH by SSHFS</h2>
<h3>Brought to You from Windows 10</h3>

4. Наконец, откройте веб-браузер и перейдите по URL-адресу веб-сайта HTTP://wbserver. Теперь вы должны увидеть обновленную домашнюю страницу, которую вы отредактировали, что подтверждает, что ваше монтирование SSHFS работает должным образом.

Заключение

Наконец-то вы дошли до конца этого урока. Вы научились использовать монтирование SSHFS для сопоставления каталогов с локальным компьютером Windows или Linux с удаленного SSH-сервера. SSHFS — отличный инструмент для удобства и безопасности удаленного доступа к файлам.

Говоря о безопасности, возможно, вам стоит в качестве следующего шага ознакомиться с разделом «Как защитить SSH с помощью Fail2Ban»? Удачи!