SSHFS как альтернатива Samba

#mac #windows #ssh #security

В MacOS Lion свободная версия Samba была заменена на собственную разработку SMB. В результате чего организовать связь между машиной с Windows и MacOS стало проблематично. Завязать их между собой можно, но при попытке скопировать вложенные директории возникает ошибка передачи данных. И связана она каким то образом с файлами .DS_Store, в которых хранится информация о формате отображения текущей папки в окне Finder.

Довольно долго я мучился с SMB. Поднимать для связи отдельный сервер FTP крайне не хотелось, в том числе и вопросами безопасности. И только недавно обратил внимание на SSHFS. На MacOS организовать SSH-сервер очень просто, следовательно, осталось только найти подходящий клиент SSHFS для Windows.

Клиенты SSHFS под Windows

Первым мне на глаза попался клиент Dokan , японская разработка, которая позволяет монтировать удаленные директории как отдельные локальные диски. С установкой проблем не возникло, а вот при использовании столкнулся с тем, что многие директории почему-то оказывались пустыми.

Вторым клиентом оказался WinSCP . На деле данная программа является не клиентом SSHFS, а является простым графическим клиентом к SFTP. То есть работать с удаленной файловой системой как со своей собственной не получиться, но все очень близко к этому.

Установка WinSCP очень проста, а точнее можно выбрать, установить программу или же просто распаковать и использовать из текущей папки. Различные варианты представлены на странице загрузки. Если необходимо, программу можно локализовать.

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

Безопасность

В любом вопросе, касающемся работе с сетью, всегда старюсь уделять основное внимание вопросам безопасности. Именно поэтому я не доверяю парольной аутентификации на SSH-сервере. Естественно задумался, каким образом можно организовать вход только по ключу.

WinSCP поддерживает ключи аутентификации, но приватные ключи используются в формате ppk, то есть генерируются с использованием Putty .

Проще всего скачать архив со всеми предлагаемыми программами, распаковать его и затем уже запускать PuTTYgen. Это отдельная программа для генерации ключей. В открывшемся окне жмем кнопку Generate, а по завершении операции, сохраняем публичный и приватный ключи в отдельные файлы.

Приватный ключ уже готов к использованию. Его достаточно указать в настройках WinSCP в параметрах аутентификации. А вот публичный ключ нужно передать на сервер и немного с ним поработать.

Если в Системных настройках MacOS в разделе Общий доступ еще не был включен Удаленный вход, то проделываем это и затем на машине с Windows запускаем WinSCP, создаем новое подключение, в котором используем наши учетные данные пользователя MacOS и организуем удаленное подключение. После чего копируем ранее созданный публичный ключ в папку ~/.ssh. Теперь отключаемся и переходим на машину с MacOS. Запускаем Terminal.App и выполняем следующие команды:

$ cd ~/.ssh
$ ssh-keygen -i -f key.pub > key2.pub
$ cat key2.pub > authorized_keys
$ chmod 0600 *

Теперь необходимо изменить настройки OpenSSH-сервера для того, чтобы отключить вход по паролю, для это открываем в редакторе файл /etc/sshd_config:

$ sudo mate /etc/sshd_config

И находим в нем следующие строки:

PasswordAuthentication no
ChallengeResponseAuthentication no

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

И WinSCP и Putty – бесплатные программы, использовать их довольно просто. Используемый канал связи и вход по ключу максимально безопасны. Не имея ключа нет возможности получить доступ к системе. И при этом не возникает больше проблем при копировании вложенных директорий с одной машины на другую. Таким образом мы избавились от Samba, довольно проблемной зоны в локальной сети, и значительно улучшили безопасность работы.

Проблема решена!