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

Как установить и использовать SSHFS в Linux


На этой странице

  1. Предпосылки
  2. Установка SSHFS на локальный компьютер
  3. Основные сведения: подключение и отключение с помощью SSHFS
  4. Настройка Chroot на SSHFS
  5. Устранение неполадок
  6. Заключение

SSHFS (файловая система SSH) — это реализация файловой системы в пользовательском пространстве (FUSE), которая позволяет клиентам монтировать удаленную файловую систему через соединение SSH. SSHFS использует протокол передачи файлов SSH (SFTP) для подключения удаленной файловой системы к клиентскому компьютеру, а соединения между клиентом и сервером безопасны и зашифрованы.

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

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

Предпосылки

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

Установка SSHFS на локальный компьютер

По умолчанию пакеты SSHFS доступны в большинстве дистрибутивов Linux, включая Debian/Ubuntu, RHEL/CentOS/Rocky и ArchLinux/Manjaro. Вы можете легко установить его с помощью системного менеджера пакетов. В этом разделе вы установите SSHFS на свой локальный/клиентский компьютер.

Сначала обновите список индексов пакетов, выполнив следующую команду.

# For Debian/Ubuntu
sudo apt update

# For RHEL/CentOS/RockyLinux
sudo dnf check-update

# For ArchLinux/Manjaro
sudo pacman -Syu

После обновления индекса вашего пакета установите пакет SSHFS с помощью диспетчера пакетов, как показано ниже. В дистрибутивах Debian и Archlinux пакет называется sshfs, но в дистрибутиве на основе RHEL пакет называется fuse-sshfs.

# For Debian/Ubuntu
sudo apt install sshfs

# For RHEL/CentOS/RockyLinux
sudo dnf install fuse-sshfs

# For ArchLinux/Manjaro
sudo pacman -S sshfs

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

Базовый: монтировать и размонтировать с помощью SSHFS

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

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

1. Ниже приведена базовая команда sshfs для подключения каталога к локальному компьютеру по протоколу SSH.

sshfs :/remote/directory /local/directory

На практике смонтируйте удаленный каталог /srv/data с сервера 172.16.1.10 в каталог локального компьютера ~/data. В этом примере используется пользователь SSH johndoe.

sshfs :/srv/data ~/data

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

Для проверки выполните команду ls в каталоге ~/data на локальном компьютере.

ls -lah ~/data

Вы увидите список файлов с удаленного сервера на вашем локальном компьютере.

2. Теперь, чтобы размонтировать удаленный каталог с локального компьютера, выполните команду fusermount, как показано ниже. Эта команда используется для монтирования и размонтирования файловых систем FUSE.

fusermount -u ~/data

3. Еще один пример команды sshfs, который может вас заинтересовать.

Команда sshfs с параметром отладки -d. Всякий раз, когда у вас возникают проблемы с командой sshfs, используйте дополнительную опцию -d для отображения всех отладочных сообщений при подключении к серверу.

sshfs :/remote/directory /local/directory -d

Теперь, если вы используете сервер с нестандартным SSH-портом, вы можете добавить параметр -p, за которым следует ваш SSH-порт.

sshfs :/remote/directory /local/directory -C -p 2222

Параметр -C включает сжатие, эквивалентное параметру -o Compression=yes в команде ssh.

Для получения полной справки вы можете использовать параметр --help или использовать справочную страницу SSHFS.

sshfs --help
man sshfs

Настройка Chroot на SSHFS

В этом разделе вы узнаете, как включить chroot на SSHFS, чего можно добиться, настроив сервер SSH и указав пользователя и каталог. Среда chroot ограничивает доступ к каталогу, но ваш пользователь по-прежнему может читать и писать в каталоге монтирования.

1. Во-первых, вы создадите новый каталог chroot для своего пользователя и разрешите доступ для чтения и записи. В этом руководстве вы создадите новый общий каталог /srv/shared, затем создадите новый домашний каталог и каталог данных для каждого пользователя.

Выполните следующую команду, чтобы создать новый основной общий каталог /srv/shared и изменить владельца на пользователя и группу root.

mkdir -p /srv/shared
sudo chown -R root:root /srv/shared

2. Теперь создайте еще один каталог для каждого пользователя в каталоге /srv/shared. И не забудьте изменить владельца этого каталога на пользователя и группу root.

mkdir -p /srv/shared/johndoe
sudo chown -R root:root /srv/shared/johndoe

3. Затем создайте каталог data внутри домашнего каталога пользователя /srv/shared/johndoe. Затем измените владельца этого каталога на пользователя root и группу johndoe. Наконец, разрешите группе johndoe читать и писать в этом каталоге.

mkdir -p /srv/shared/johndoe/data
sudo chown -R root:johndoe /srv/shared/johndoe/data
sudo chmod g+rwx /srv/shared/johndoe/data

Теперь вы можете смонтировать удаленный каталог /data, но он эквивалентен каталогу /srv/shared/johndoe/data на сервере.

4. После того, как вы создали каталог chroot для своего пользователя, вам необходимо отредактировать конфигурацию SSH /etc/ssh/sshd_config. Отредактируйте его с помощью nano или вашего любимого текстового редактора.

sudo nano /etc/ssh/sshd_config

Добавьте в файл следующие строки.

Subsystem sftp internal-sftp
Match User johndoe
       ChrootDirectory /srv/shared/%u
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no

Конфигурация internal-sftp также позволит SSH действовать как SFTP-сервер. Затем определите ChrootDirectory для пользователя johndoe в каталоге /srv/shared/%u. %u означает имя пользователя.

Сохраните и закройте файл.

5. Затем выполните следующую команду, чтобы проверить конфигурацию SSH и убедиться, что у вас нет синтаксических ошибок. Затем перезапустите службу SSH, чтобы применить новую конфигурацию.

sudo sshd -t
sudo systemctl restart sshd

6. Теперь вернитесь к клиентской/локальной машине, затем смонтируйте удаленный каталог в среде chroot. Вы должны использовать каталог /data вместо каталога с полным путем /srv/shared/johndoe/data. И у вас есть права на чтение, запись и выполнение в каталоге данных.

sshfs :/data ~/data

Чтобы проверить доступ для записи, создайте новый файл на клиентском компьютере с помощью следующей команды.

cd ~/data
echo "This file from client machine" >> another-file.md

Теперь вернитесь к серверу, перейдите в каталог /srv/shared/johndoe/data и проверьте доступный файл в этом каталоге.

cd /srv/shared/johndoe/data/
ls

cat another-file.md

Вы увидите файл, который вы только что создали на клиентской машине.

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

Исправление проблем

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

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

Запустите команду sshfs в режиме отладки, как показано ниже.

sshfs :/data ~/mnt -d

Другой способ, который вы можете попробовать, — это проверить журнал SSH на вашем сервере. Прежде чем использовать команду sshfs, откройте новый терминал и подключитесь к своему серверу, затем запустите команду tail, чтобы проверить службу журнала SSH.

В системе на основе Ubuntu/Debian журнал SSH доступен по адресу /var/log/auth.log. А для системы на базе RHEL/CentOS журнал SSH доступен в папке /var/log/secure.

# For Ubuntu/Debian
tail -f /var/log/auth.log

# For RHEL/CentOS
tail -f /var/log/secure

Заключение

Поздравляем! Теперь вы узнали, как использовать SSHFS для монтирования удаленного каталога с сервера на локальный компьютер. Кроме того, вы узнали, как настроить среду chroot на SSHFS и как устранить неполадки с подключением SSHFS.