- Самый удобный способ работы с файлами хостинга на macOS (sshfs + Automator)
- Настройка SSH Аутентификации по открытому ключу
- Установка sshfs в macOS
- Автоматизация подключения при загрузке системы
- Премиум уроки от WebDesign Master
- Benohead’s Software Blog
- Mac OS X: use SSHFS to mount a remote directory as a volume
- Mac os mount ssh directory
- About
Самый удобный способ работы с файлами хостинга на macOS (sshfs + Automator)
Всем привет, друзья! Сегодня мы рассмотрим удобнейший способ работы с файловой системой удаленного веб-сервера или хостинга с помощью sshfs на macOS. Сама программа sshfs является linux-приложением, поэтому вы без труда сможете использовать данное руководство в системе Linux и подобных, имеющих реализацию FUSE. Благодаря данному руководству вы сможете настроить автоматическое подключение файловой системы вашего веб-сервера к компьютеру и работать с файлами так быстро, как будто работаете с файлами вашей собственной файловой системы. Скорость работы будет ограничиваться только скоростью вашего интернет-соедиения.
По сути, вы получите идеальную быструю альтернативу таким FTP клиентам, как FileZilla и подобным, только в разы удобнее и быстрее. Ваш хостинг всегда будет у вас под рукой в отдельной папке, которую мы настроим и подготовим.
Для начала необходимо настроить SSH аутентификацию по открытому ключу. Как это сделать мы рассматривали в одном из наших предыдущих уроков «Rsync — молниеносный деплой средних и крупных проектов», раздел «1.2 Настройка SSH Аутентификации по открытому ключу». Для удобства, я продублирую это руководство в данной статье.
Настройка SSH Аутентификации по открытому ключу
Создайте директорию для SSH, в том случае, если она еще не создана (знак доллара копировать не нужно):
Зайдите в созданную папку и сгенерируйте ключ (на все вопросы — жмем Enter):
Скопируйте получившийся ключ id_rsa.pub на ваш хостинг или сервер:
Подключитесь к удаленному серверу для внесения нового ключа в authorized_keys:
Если директория еще не существует, создайте ее и установите соответствующие права:
Скопируйте сгенерированный ключ в специальный файл доступа ‘authorized_keys’ и установите на него безопасные права:
Удалите скопированный в корень вашего пользователя ключ, который уже добавили в общий файл и завершите вашу сессию командой logout:
Далее нам остается только добавить закрытый ключ в агент аутентификации на локальном компьютере:
Если вы не получили сообщения вида «Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)», а получили оведомление вроде такого: «Could not open a connection to your authentication agent.», то следует запустить агента командой eval:
И заново запустите ssh-add. Теперь вы можете пользоваться SSH на вашем компьютере, а в том числе и rsync, который использует SSH без авторизации в автоматическом режиме. Попробуйте подключиться снова к вашему серверу по SSH и убедитесь, что от вас не требуется ввести пароль. В противном случае, если пароль все-таки требуется ввести, повторите процедуру получения SSH ключа заново.
Установка sshfs в macOS
Для установки sshfs в macOS нам понадобится менеджер пакетов Homebrew. Для его установки перейдите на страницу Homebrew и выполните инструкции по его установке, которая сводятся к открытию терминала и выполнения одной команды:
Процесс установки Homebrew может занять довольно продолжительное время из-за установки инструментов командной строки Xcode.
По завершении установки менеджера пакетов Homebrew можно приступать к установке sshfs. Для этого последовательно выполните в терминале следующие команды:
Отлично! Sshfs установлен.
Давайте создадим в папке «Документы» папку «SERVER», к которой и будем подключать файловую систему нашего хостинга.
Если с данной задачей вы справились, можно смело двигаться дальше.
Использование sshfs довольно элементарно. Все действия производятся в терминале (Все данные замените на ваши, такие, как доступ к серверу и имя пользователя):
Как видим, команда элементарна. Сначала мы выполняем программу «sshfs», после чего задаем параметры подключения к серверу формата логин@ваш-хост:/путь/до/вашего/аккаунта (пробел) /Путь/До/Вашей/Локальной/Папки/SERVER
Однако эта команда нуждается в дополнительных параметрах. Во-первых, нам необходимо, чтобы по истечении определенного таймаута наш удаленный сервер не отрубился и всегда был в коннекте. Для этого существует параметр «reconnect». Все параметры пишем через запятую после определения «-o».
В результате наша команда будет выглядеть следующим образом:
Отлично, теперь мы имеем подключенную файловую систему вашего хостинга, которая постоянно будет подключена и никогда не «отрубится» благодаря параметру reconnect.
Однако пользователи macOS заметят одну неприятную особенность работы sshfs, в отличие от пользователей Linux — подключение будет медленное, переход по папкам будет медлителен и в целом работа будет не очень шустрая.
Все дело в том, что работа программы sshfs в macOS несколько отличается от работы в Linux и здесь не обойтись без дополнительных параметров кеширования и сжатия.
Вот полная команда со всеми параметрами:
Здесь мы видим, что окромя «reconnect» появились и другие параметры, которые мы перечисляем через запятую. Именно эти параметры и явное отключение компрессии в конце сета параметров и сделают наше подключение и работу с файлами сервера или хостинга молниеносным, как соленые огурчики с молоком.
Обратите внимание, что у нас в конце появился еще один параметр «-ovolname=SERVER», который просто определяет имя нашего подключения. Название нашей папки, которую мы создали в Документах при подключении поменяется именно на это название, поэтому не вижу смысла задавать другое значение данному параметру.
Автоматизация подключения при загрузке системы
Все, наша команда готова. Осталось только автоматизировать подключение при загрузке системы. Для этого нам понадобится приложение «Automator», которое вы с легкостью найдете в вашем Launchpad на macOS.
В открывшемся окне выберем создание нового документа:
Далее выбираем тип для документа «Программа»:
Далее в поле поиска вбиваем «скрипт» и выбираем пункт «Запустить Shell-скрипт».
После чего откроется панель, в которой уже будет тестовый первый скрипт, выполняющий команду «cat». Убираем «cat» и пишем нашу команду, которую мы определили ранее:
Обратите внимание, что системный вызов команды «sshfs» мы заменили на прямой «/usr/local/bin/sshfs». Дело в том, что Shell-обработчик Автоматора не видит установленной программы в системе и нужно писать полный путь до нашего sshfs.
Теперь осталось только запустить наш скрипт и сохранить программу в любое удобное место с именем «Server.app»:
Обратите внимание, что место сохранения нашего приложения — iCloud. Здесь есть специальная папка для сохранения пользовательских Automator приложений.
После того, как наш скрипт запакован в приложение, при запуске которого подключается наш сервер, можно добавить его в автозагрузку. «Системные настройки» > «Пользователи и группы». Выбираете вашего пользователя и переходите на вкладку «Объекты входа». И добавляете, собственно говоря, ваше приложение:
Теперь при загрузке системы у вас будет подключаться файловая система вашего хостинга в папку «SERVER», которую вы можете вынести на панель «Избранное» в Finder для быстрого доступа.
Премиум уроки от WebDesign Master
Создание сайта от А до Я. Комплексный курс
Создание современного интернет-магазина от А до Я
Источник
Benohead’s Software Blog
Mac OS X: use SSHFS to mount a remote directory as a volume
While working for amazingweb, I often need to edit existing files. This can be done with the web-based management UI but it’s so much nicer to be able to use the same editors and tools you’re used to on your local machine.
In order to be able to do this, you need either to have your editors/tools support SFTP and get and put files on the fly or be able to mount the remote file system as a volume on your local machine. Even if you find some solutions for a few of your editors (e.g. the Sublime Text editor with the SFTP plugin) you’ll still not be able to do everything as if it was all local because at least one tool doesn’t support SFTP.
So the more generic solution is to mount the remote file system. Of course since your remote server is remote and needs to be secured, you can only access it using SSH. Fortunately, SSH provides many extensions, some of which are used by pretty much everybody (e.g. SFTP) and others which are less known.
One of these extensions is SSHFS (Secure SHell FileSystem). It implements a file system and can be used on the Linux operating system and other platforms where FUSE is ready. FUSE (Filesystem in Userspace) is a kernel module for Unix systems, which enables file system drivers to shift from kernel mode to user mode. It thus allows non-privileged users to mount their own file systems.
In the past MacFUSE used to be the most prominent FUSE implementation for Max OS X. MacFUSE is not maintained anymore and has been replaced by “FUSE for OS X” (OSXFUSE). An alternative is Fuse4X which is a fork off MacFUSE but unlike MacFUSE it is fully compatible with FUSE.
I’ve used Fuse4X and it worked fine so I haven’t tried OSXFUSE.
You have three ways install Fuse4X:
- Download it from here and install it manually.
- Install it using Macport:
- Install it using Homebrew:
I used Homebrew and got the following errors:
Unfortunately it doesn’t tell you what’s the actual problem… So I just did what I was told to:
Ok, so let’s do it with —overwrite :
Ok, now that you have installed Fuse4X using one of the three methods above, you’ll need to install sshfs.
With Homebrew, it is pretty easy:
Also check the following instruction before continuing:
Now, you have both Fuse4X and SSHFS installed, so you can mount a remote directory as a volume using:
Note that this works without needing any password because I use public-key cryptography to authenticate.
You only need to create the directory using mkdir once.
The first parameter ( -p 22 ) means that port 22 should be used (the standard SSH port). The second parameter is the username, hostname and path to the remote filesystem to be mounted. The third parameter is the local path. The forth parameter is the list of options used:
- auto_cache: enable caching based on modification times
- reconnect: reconnect to server
- defer_permissions: certain shares may mount properly but cause permissions denied errors when accessed (an issue caused by the way permissions are translated and interpreted by the Mac OS X Finder). This option works around this problem
- noappledouble: to prevent Mac OS X to write .DS_Store files on the remote file system
- volname: the volume name to be used
You can now access it just like a normal local folder. Of course you have to remount it after restarting the computer.
You can also automate the mounting of the remote folder using an application. To create one:
- Open the AppleScript Editor
- Create a script like the one which follows
- Save it as an application
- You can then start the application to mount your folder instead of going to the terminal
Here the script I use:
Update: An alternative is to use ExpanDrive it makes it easy to setup a drive and reconnect automaticallyand allows you to use the drive anywhere. It’s technically a whole different beast since it’s actually using SFTP and showing the remote filesystem as a drive, but you won’t really feel the difference. The main reason why I do not use it is that it doesn’t work with authentication key instead of password: my Server doesn’t not allow authentication with password (only with registered keys). Theyhave a 7-days free trial period, so you can just give it a try.
Update: Fuse4x is not maintained anymore and has merged with osxfuse. So now, you should use osxfuse instead of Fuse4x. Osxfuse can also be installed with Homebrew. The package is not yet available in the repository so the following will fail:
You have to do the following to install it:
After that execute the following:
If this fails saying that the file does not exist, it means that building osxfuse failed and the resulting file is missing. To check what happened, execute the following:
I got the following messgage:
/usr/bin/xcodebuild: line 2: -version: command not found
OSXFUSEBuildTool() : skip unsupported Xcode version in ‘/Applications/Xcode.app/Contents/Developer’.
OSXFUSEBuildTool() failed: no supported version of Xcode found.
It’s due to a trick I used some time ago to build gem native extensions without XCode… All you have to do is restore the original xcrun file, remove the already partially installed osxfuse and reinstall it:
Источник
Mac os mount ssh directory
This is a filesystem client based on the SSH File Transfer Protocol. Since most SSH servers already support this protocol it is very easy to set up: i.e. on the server side there’s nothing to do. On the client side mounting the filesystem is as easy as logging into the server with ssh.
The idea of sshfs was taken from the SSHFS filesystem distributed with LUFS, which I found very useful. There were some limitations of that codebase, so I rewrote it. Features of this implementation are:
Based on FUSE (the best userspace filesystem framework for Linux 😉
Multithreading: more than one request can be on it’s way to the server
Allowing large reads (max 64k)
Caching directory contents
Reconnect on failure
The latest version and more information can be found on http://github.com/libfuse/sshfs
How to mount a filesystem
Once sshfs is installed (see next section) running it is very simple:
Note, that it’s recommended to run it as user, not as root. For this to work the mountpoint must be owned by the user. If the username is different on the host you are connecting to, then use the «username@host:» form. If you need to enter a password sshfs will ask for it (actually it just runs ssh which ask for the password if needed). You can also specify a directory after the «:». The default is the home directory.
Also many ssh options can be specified (see the manual pages for sftp(1) and ssh_config(5)), including the remote port number ( -oport=PORT )
To unmount the filesystem:
First you need to download FUSE 2.2 or later from http://github.com/libfuse/libfuse.
You also need to install the devel package for glib2.0. After installing FUSE, compile sshfs the usual way:
And you are ready to go.
If checking out from git for the first time also do autoreconf -i before doing ./configure .
About
File system based on the SSH File Transfer Protocol
Источник