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

25 March 2012 #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, довольно проблемной зоны в локальной сети, и значительно улучшили безопасность работы.

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