Всем привет, друзья! Сегодня мы рассмотрим удобнейший способ работы с файловой системой удалённого веб-сервера или хостинга с помощью sshfs на macOS. Сама программа sshfs является linux-приложением, поэтому вы без труда сможете использовать данное руководство в системе Linux и подобных, имеющих реализацию FUSE. Благодаря данному руководству вы сможете настроить автоматическое подключение файловой системы вашего веб-сервера к компьютеру и работать с файлами так быстро, как будто работаете с файлами вашей собственной файловой системы. Скорость работы будет ограничиваться только скоростью вашего интернет-соедиения.
По сути, вы получите идеальную быструю альтернативу таким FTP клиентам, как FileZilla и подобным, только в разы удобнее и быстрее. Ваш хостинг всегда будет у вас под рукой в отдельной папке, которую мы настроим и подготовим.
Для начала необходимо настроить SSH аутентификацию по открытому ключу. Как это сделать мы рассматривали в одном из наших предыдущих уроков «Rsync - молниеносный деплой средних и крупных проектов», раздел «1.2 Настройка SSH Аутентификации по открытому ключу». Для удобства, я продублирую это руководство в данной статье.
Настройка SSH Аутентификации по открытому ключу
Создайте директорию для SSH, в том случае, если она ещё не создана (знак доллара копировать не нужно):
$ mkdir -p ~/.ssh $ chmod 700 ~/.ssh
Зайдите в созданную папку и сгенерируйте ключ (на все вопросы - жмём Enter):
$ cd ~/.ssh $ ssh-keygen
Скопируйте получившийся ключ id_rsa.pub на ваш хостинг или сервер:
$ scp -p id_rsa.pub sshusername@yousite.com:~
Подключитесь к удалённому серверу для внесения нового ключа в authorized_keys:
$ ssh sshusername@yousite.com Password:
Если директория ещё не существует, создайте её и установите соответствующие права:
RemoteServer~$ mkdir -p ~/.ssh RemoteServer~$ chmod 700 ~/.ssh
Скопируйте сгенерированный ключ в специальный файл доступа 'authorized_keys' и установите на него безопасные права:
RemoteServer~$ cat id_rsa.pub >> ~/.ssh/authorized_keys RemoteServer~$ chmod 600 ~/.ssh/authorized_keys
Удалите скопированный в корень вашего пользователя ключ, который уже добавили в общий файл и завершите вашу сессию командой logout:
RemoteServer~$ rm -f ~/id_rsa.pub RemoteServer~$ logout
Далее нам остаётся только добавить закрытый ключ в агент аутентификации на локальном компьютере:
$ ssh-add
Если вы не получили сообщения вида "Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)", а получили оведомление вроде такого: "Could not open a connection to your authentication agent.", то следует запустить агента командой eval:
$ eval `ssh-agent -s`
И заново запустите ssh-add. Теперь вы можете пользоваться SSH на вашем компьютере, а в том числе и rsync, который использует SSH без авторизации в автоматическом режиме. Попробуйте подключиться снова к вашему серверу по SSH и убедитесь, что от вас не требуется ввести пароль. В противном случае, если пароль всё-таки требуется ввести, повторите процедуру получения SSH ключа заново.
Установка sshfs в macOS
Для установки sshfs в macOS нам понадобится менеджер пакетов Homebrew. Для его установки перейдите на страницу Homebrew и выполните инструкции по его установке, которая сводятся к открытию терминала и выполнения одной команды:
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»
Процесс установки Homebrew может занять довольно продолжительное время из-за установки инструментов командной строки Xcode.
По завершении установки менеджера пакетов Homebrew можно приступать к установке sshfs. Для этого последовательно выполните в терминале следующие команды:
$ brew cask install osxfuse $ brew install sshfs
Отлично! Sshfs установлен.
Давайте создадим в папке «Документы» папку «SERVER», к которой и будем подключать файловую систему нашего хостинга.
Если с данной задачей вы справились, можно смело двигаться дальше.
Использование sshfs довольно элементарно. Все действия производятся в терминале (Все данные замените на ваши, такие, как доступ к серверу и имя пользователя):
$ sshfs username@youhost.ru:/path/to/user/ /Users/Username/Documents/SERVER/
Как видим, команда элементарна. Сначала мы выполняем программу «sshfs», после чего задаём параметры подключения к серверу формата логин@ваш-хост:/путь/до/вашего/аккаунта (пробел) /Путь/До/Вашей/Локальной/Папки/SERVER
Однако эта команда нуждается в дополнительных параметрах. Во-первых, нам необходимо, чтобы по истечении определённого таймаута наш удалённый сервер не отрубился и всегда был в коннекте. Для этого существует параметр «reconnect». Все параметры пишем через запятую после определения «-o».
В результате наша команда будет выглядеть следующим образом:
$ sshfs username@youhost.ru:/path/to/user/ /Users/Username/Documents/SERVER/ -o reconnect
Отлично, теперь мы имеем подключённую файловую систему вашего хостинга, которая постоянно будет подключена и никогда не «отрубится» благодаря параметру reconnect.
Однако пользователи macOS заметят одну неприятную особенность работы sshfs, в отличие от пользователей Linux - подключение будет медленное, переход по папкам будет медлителен и в целом работа будет не очень шустрая.
Всё дело в том, что работа программы sshfs в macOS несколько отличается от работы в Linux и здесь не обойтись без дополнительных параметров кеширования и сжатия.
Вот полная команда со всеми параметрами:
$ sshfs username@youhost.ru:/path/to/user/ /Users/Username/Documents/SERVER/ -o reconnect,auto_cache,defer_permissions,noappledouble,Compression=no -ovolname=SERVER
Здесь мы видим, что окромя «reconnect» появились и другие параметры, которые мы перечисляем через запятую. Именно эти параметры и явное отключение компрессии в конце сета параметров и сделают наше подключение и работу с файлами сервера или хостинга молниеносным, как солёные огурчики с молоком.
Обратите внимание, что у нас в конце появился ещё один параметр «-ovolname=SERVER», который просто определяет имя нашего подключения. Название нашей папки, которую мы создали в Документах при подключении поменяется именно на это название, поэтому не вижу смысла задавать другое значение данному параметру.
Автоматизация подключения при загрузке системы
Всё, наша команда готова. Осталось только автоматизировать подключение при загрузке системы. Для этого нам понадобится приложение «Automator», которое вы с лёгкостью найдёте в вашем Launchpad на macOS.
В открывшемся окне выберем создание нового документа:

Далее выбираем тип для документа «Программа»:

Далее в поле поиска вбиваем «скрипт» и выбираем пункт «Запустить Shell-скрипт».

После чего откроется панель, в которой уже будет тестовый первый скрипт, выполняющий команду «cat». Убираем «cat» и пишем нашу команду, которую мы определили ранее:

Обратите внимание, что системный вызов команды «sshfs» мы заменили на прямой «/usr/local/bin/sshfs». Дело в том, что Shell-обработчик Автоматора не видит установленной программы в системе и нужно писать полный путь до нашего sshfs.
Теперь осталось только запустить наш скрипт и сохранить программу в любое удобное место с именем «Server.app»:

Обратите внимание, что место сохранения нашего приложения - iCloud. Здесь есть специальная папка для сохранения пользовательских Automator приложений.
После того, как наш скрипт запакован в приложение, при запуске которого подключается наш сервер, можно добавить его в автозагрузку. «Системные настройки» > «Пользователи и группы». Выбираете вашего пользователя и переходите на вкладку «Объекты входа». И добавляете, собственно говоря, ваше приложение:

Теперь при загрузке системы у вас будет подключаться файловая система вашего хостинга в папку «SERVER», которую вы можете вынести на панель «Избранное» в Finder для быстрого доступа.
Премиум уроки от WebDesign Master
Другие уроки по теме «Инструменты»
- Gulp include на стороне сервера Browsersync + Build
- OptimizedHTML 5: Важные обновления стартера для JS-разработки
- Gulp 4 - Актуальное и исчерпывающее руководство для самых маленьких
- Актуальный способ установки и настройки окружения Windows WSL 2 (Windows Subsystem for Linux)
- PageSpeed Insights - Оптимизация (обновление)
- October CMS - Первое знакомство