Как стать автором
Обновить

Настройка sshfs на FreeBSD.

Появилась у меня необходимость обрабатывать логи lighttpd по по ряду причин делать это прямо на веб сервере я как говорится «имею возможность, но не имею желания». Поэтому первой задачей встало переправить этот лог, да так чтобы он случайно не оказался в чьих-то руках. Я выбрал для решения этой задачи sshfs. Собственно говоря о настройке ее и пойдет речь. Ставлю речь идет о настройке на FreeBSD 7.1.

После чтения википедии сложилось обманчивое впечатление что все просто и делается 1 командой:

sshfs remoteuser@remotehost:/путь/к/удаленной_директории локальная_директория


Однако как оказалось это не правда.
1) Ставим

cd /usr/ports/sysutils/fusefs-sshfs
make install clean

не встает. Ей нужно что-то из sources. Разумеется я их не поставил когда ставил базовую систему. Поскольку сервер на другом конце города и всунуть диск не кому ставим сырцы через sysinstall, где указываем что лить по ftp. Пробуем снова. Пошла установка, придется правда еще несколько пакетов поставить, но там ничего особенно сложного нет.

2) Делаем пользователей. Умные люди в интернетах пишут что для таких целей лучше всего подойдет аутентификация по ключу (хотя можно и host-based сделать в моем случае). Делаем следующее:
— создаем пользователей myuser на обоих серверах (зачем? так проще и прасивее) пароли не играют никакой роли, поэтому совпадают они или нет (привет самбоползователи;) ) не играет никакой роли.
— далее определимся в терминах: сервер1 — куда подключаемся сервер2 — тот который будет подключатся. На сервере 2 делаем
su myuser
ssh-keygen -t rsa
ls -la /home/myuser/.ssh/

должны появится 2 файла: id_rsa и id_rsa.pub

отправляем публичный ключ на сервер1
scp /home/myuser/.ssh/id_rsa.pub сервер1:myuser.id_rsa.pub


затем идем на сервер1

в /home/myuser/ ищем файл myuser.id_rsa.pub Если не находим — find / | grep myuser.id_rsa.pub если опять его нигде нет дальше можно не читать.

cd / home/myuser/
mkdir .ssh
cat /home/myuser/myuser.id_rsa.pub >> /home/myuser/.ssh/authorized_keys


Проверяем. Если все создалось как положено идем обратно на сервер2.

Теперь, мы по прежнему находимся под myuser, проверяем
ssh сервер1

Если этот пункт проделан правильно нас должно пустить без пароля. (если конечно вы не задали парольную фразу для пущей безопасности ;) )

3) собственно теперь у нас должно все заработать командой

sshfs myuser@сервер1:/удаленный_каталог /локальная_точка_монтирования


Не работает!

Открываем /usr/local/etc/rc.d/fusefs и смотрим что никакой уличной магии там нет, сей скрипт подгружает модуль /usr/local/modules/fuse.ko в ядро. То же самое мы можем сделать руками

kldload /usr/local/modules/fuse.ko

Проверяем с помощью kldstat. И не забываем добавить fusefs_enable=«YES» в /etc/rc.conf

Далее разрешим не только руту монтировать файловые системы

sysctl vfs.usermount=1


И снова не забываем добавить в /etc/sysctl строчку «vfs.usermount=1»

И последний штрих:

ls /dev | grep fuse
chmod 0666 /dev/fuse0

И еще раз не забываем добавить в /etc/devfs.conf
perm /dev/fuse0 0666

Выполняем команду по образу подобию той, что в википедии и получаем PROFIT смонтированую файловую систему с удаленного сервера =)

К sshfs есть целая куча дополнительных параметров о чем man сухо упоминает. Например -o reconnect я честно говоря на понял как работает. Пока не понял. Но это хорошая тема для следующих топиков.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.