Монтирование удаленной папки с помощью sshfs
Установка и использование
1. Устанавливаем sshfs:
$sudo apt-get install sshfs
2. Теперь монтируем удаленную папку (примерно так):
$sshfs user@remote.host:/somedir /somemydir -o uid=1000,gid=1000
где
user – имя пользователя на удаленном сервере;
remote.host – адрес удаленного сервера;
/somedir – папка на удаленном сервере, которая будет монтироваться;
/somemydir – папка на вашем компьютере, куда будет монтироваться удаленная папка;
-o uid=1000,gid=1000 – различные параметры монтирования (подробнее смотрите в man).
Понятное дело, все приведенные выше значения вы меняете под себя.
3. Отмонтируется все это дело, следующей командой
$fusermount -u /somemydir
4. Добавляем автомонтирование при загрузке системы через /etc/fstab. Для этого редактируем его:
$sudo nano /etc/fstab
и добавляем туда строку (пример):
sshfs#user@remote.host:/somedir /somemydir fuse uid=1000,gid=1000 0 0
Монтирование, если просит пароль
1. В большинстве случаев, автомонтирование не прокатит, так как запрашивается пароль при монтировании, а такие опции, как password и credentials для sshfs – не катят. поэтому есть, как минимум, два варианта это поправить.
1.1. Первый – это использование RSA или DSA ключей для ssh соединения (про это я уже раньше упоминал в другой статье).
1.2. Второй – просто не парится всякими fstab, а просто добавить в автозагрузку ‘Система’->’Параметры’->’Сеансы’ запуск следующей команды
echo ‘password’ | sshfs user@remote.host:/somedir /somemydir -o password_stdin
где
password – тот самый пароль для удаленного сервера;
password_stdin – опция которая принимает пароль передаваемый, в данном случае, через echo.
Конечно, в этом случае пароль передается в открытом виде, но никто не мешает запихнуть эту команду в скрипт, которому присвоить нужные права, а потом этот скрипт добавить в автозагрузку.
Проблема при монтировании. И ее решение.
1. Бывает, что при монтировании выскакивает ошибка
read: Connection reset by peer
в этом случае надо послать на адрес, к которому коннектимся, какой-нить текст
$ssh user@remote.host echo text
в ответ вы получите сообщение, из которого вас интересуют строки похожие на эти:
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:2
нас интересует именно последняя цифра, это номер строки, которую нам надо удалить, в данном случае – 2.
2. Удаляем в файле known_hosts найденную строку:
$sed -i -e ‘2d’ /home/user/.ssh/known_hosts
3. Снова отправляем на адрес, к которому коннектимся, строку
$ssh user@remote.host echo text
только в этот раз – появится предложение на ввод пароля для добавления ключа этого адреса в ваш список.
Все теперь ошибка не должна появляться снова.
Проблема: sshfs и svn. И ее решение.
1. При работе с sshfs столкнулся с такой проблемой, что когда пытаешься работать с svn на примонтированной папке, например делать checkout, то получаешь следующую ошибку:
svn: Can’t move ‘.svn/tmp/entries’ to ‘.svn/entries’: Operation not permitted
2. Лечится это, добавлением опции workaround=rename при монтировании. Пример:
$sshfs user@remote.host:/somedir /somemydir -o workaround=rename,uid=1000,gid=1000