Появилась у меня необходимость обрабатывать логи lighttpd по по ряду причин делать это прямо на веб сервере я как говорится «имею возможность, но не имею желания». Поэтому первой задачей встало переправить этот лог, да так чтобы он случайно не оказался в чьих-то руках. Я выбрал для решения этой задачи sshfs. Собственно говоря о настройке ее и пойдет речь. Ставлю речь идет о настройке на FreeBSD 7.1.
После чтения википедии сложилось обманчивое впечатление что все просто и делается 1 командой:
Однако как оказалось это не правда.
1) Ставим
не встает. Ей нужно что-то из sources. Разумеется я их не поставил когда ставил базовую систему. Поскольку сервер на другом конце города и всунуть диск не кому ставим сырцы через sysinstall, где указываем что лить по ftp. Пробуем снова. Пошла установка, придется правда еще несколько пакетов поставить, но там ничего особенно сложного нет.
2) Делаем пользователей. Умные люди в интернетах пишут что для таких целей лучше всего подойдет аутентификация по ключу (хотя можно и host-based сделать в моем случае). Делаем следующее:
— создаем пользователей myuser на обоих серверах (зачем? так проще и прасивее) пароли не играют никакой роли, поэтому совпадают они или нет (привет самбоползователи;) ) не играет никакой роли.
— далее определимся в терминах: сервер1 — куда подключаемся сервер2 — тот который будет подключатся. На сервере 2 делаем
должны появится 2 файла: id_rsa и id_rsa.pub
отправляем публичный ключ на сервер1
затем идем на сервер1
в /home/myuser/ ищем файл myuser.id_rsa.pub Если не находим — find / | grep myuser.id_rsa.pub если опять его нигде нет дальше можно не читать.
Проверяем. Если все создалось как положено идем обратно на сервер2.
Теперь, мы по прежнему находимся под myuser, проверяем
Если этот пункт проделан правильно нас должно пустить без пароля. (если конечно вы не задали парольную фразу для пущей безопасности ;) )
3) собственно теперь у нас должно все заработать командой
Не работает!
Открываем /usr/local/etc/rc.d/fusefs и смотрим что никакой уличной магии там нет, сей скрипт подгружает модуль /usr/local/modules/fuse.ko в ядро. То же самое мы можем сделать руками
Проверяем с помощью kldstat. И не забываем добавить fusefs_enable=«YES» в /etc/rc.conf
Далее разрешим не только руту монтировать файловые системы
И снова не забываем добавить в /etc/sysctl строчку «vfs.usermount=1»
И последний штрих:
И еще раз не забываем добавить в /etc/devfs.conf
perm /dev/fuse0 0666
Выполняем команду по образу подобию той, что в википедии и получаемPROFIT смонтированую файловую систему с удаленного сервера =)
К sshfs есть целая куча дополнительных параметров о чем man сухо упоминает. Например -o reconnect я честно говоря на понял как работает. Пока не понял. Но это хорошая тема для следующих топиков.
После чтения википедии сложилось обманчивое впечатление что все просто и делается 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
Выполняем команду по образу подобию той, что в википедии и получаем
К sshfs есть целая куча дополнительных параметров о чем man сухо упоминает. Например -o reconnect я честно говоря на понял как работает. Пока не понял. Но это хорошая тема для следующих топиков.