Как использовать монтирование 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»? Удачи!