MyTetra Share
Делитесь знаниями!
Монтирование удаленной папки с помощью sshfs
Время создания: 25.04.2013 22:47
Раздел: root - Linux
Запись: Yurons/mytetra/master/base/1366919267fv0u52wkc8/text.html на raw.github.com

Монтирование удаленной папки с помощью sshfs

Недавно возникла необходимость использовать удаленный сервер, чтобы удаленно работать там с проектами из svn. Доступ к серверу, только через ssh. Конечно работать с svn можно прям на удаленной машине, но вот с файлами мне проще работать на своей машине. Поэтому я и решил подключить себе нужную папку с удаленного сервера, как примонтированный диск, чтобы проводимые мною изменения сразу писались удаленно на сервер, без лишних, в дальнейшем, телодвижений.

Так как у меня, есть только подключение через ssh, поэтому для монтирования удаленной папки я использовал файловую систему SSHFS (Secure SHell FileSystem).

 

Установка и использование

 

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

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования