Монтируем удаленную файловую систему через SSH.

Автор оригинала: Carthik on Ubuntu.wordpress.com
  • Перевод
Во время работы часто приходится работать с удаленными файлами, часто через ssh. Gnome позволяет подключиться и работать с данными с помощью утилиты Places->Connect to Server, но, к сожалению, таким образом могут работать не все программы… Vim, например, а так как это основной мой редактор — я искал способ сделать это. И нашел :)


Все, что написано дальше — касается Linux, в частности Ubuntu Linux.
Итак, способ: смонтировать удаленую систему так же, как вы монтируете локальные диски. Сделать такое возможно с поомщью утилиты sshfs.
Для начала надо ее установить вместе с несколькими зависимостями:

$sudo apt-get install sshfs

Потом нужно добавить себя в группу пользователей fuse. Сделать это надо, потому что программа устанавливвается в системные папки, в которые обычным пользователям доступ запрещен. Так, добавляем себя в группу:

$sudo adduser <Пользователь> fuse

Потом создаем директорию для монтирования, например, на рабочем столе:

$mkdir ~/Desktop/test_ssh

Теперь надо выйти с терминала и зайти вновь. Все, теперь мы в группе fuse. Пробуем соединиться с сервером:

$sshfs user@example.com:/stuff ~/Desktop/test_ssh

Если соединение идет не по ключу то, скорее всего, у вас появится запрос на введение пароля с удаленной машины.
Если же вы сразу не получили ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first — проверяйте директорию, там должны появиться файлики :). Если же вылезла ошибка — значит модуль ядра fuse не загрузился автоматом, пробуем загрузить вручную:

$sudo modprobe fuse

Пробуем установить соединение еще раз.
Чтобы отмонтировать это все дело, надо выполнить следующее:

$fusermount -u ~/Desktop/test_ssh

Чтобы каждый раз не вводить такую кучу комманд — создаем(если нету) и редактируем файл ~/.bash_aliases, добавляя в конец такие строчки:

alias testssh='sshfs user@example.com:/stuff ~/Desktop/test_ssh'
alias testssh_umount='fusermount -u ~/Desktop/test_ssh'


Теперь вы сможете монтировать удаленную машину командой testssh, а размонтировать — testssh_umount :)

Cпасибо за внимание!

ЗЫ Статью сначала перевел с английского на украинский, добавил немного своего и перевел на русский для Хабра :)
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 29

    –2
    Ухты! :) Какие люди :)
      –2
      привет :)
      0
      Есть возможность монтировать эти директории через fstab - при загрузке системы. Имхо это удобнее скрипта в большинстве случаев.
        0
        Согласенб но только если есть нужда постоянно быть подключенным к удаленной машине.
        У меня на ноутбуке там где я работаю не всегда есть сеть, в таком случае удобнее скриптом. Тем более что там писать то :)
          +1
          При отсутствии сети оно просто не подмонтируется :) Равно как если авторизации по ключикам не сделано.
          Если подключаться надо периодически - согласен, что стоит использовать скрипт. Но в других случаях - не уверен. У меня, к примеру постоянно висит соединение с несколькими серверами - используются они редко, но всегда готовы, если я захочу что-нибудь с ними сделать.

          Строчка из фуси:
          sshfs#user@somehost.ru:/home/user/www /home/nekt/work/ fuse allow_other,transform_symlinks 0 0

          allow_other - открывает доступ всем пользователям
          transform_symlinks - преобразует симлинки на монтируемой фс, дабы сохранить их работоспособность.
          прочие настройки - в мануале.

          ЗЫ ограничение 1-камент-в-5-минут убивает.
            0
            спасибо, полезное дополнение :)
          0
          Зависит от ситуации: если настроить монтирование через fstab, то это значит что любой человек с физическим доступом к компу будет иметь возможность доступа к удалённым файлам. Можно, конечно, зашифровать всё на локальном диске и спрашивать пороль при загрузке - но это сомнительное удобство.

          P.S. А заставить всё монтировать при login'е через PAM никто не пробовал - это, казалось бы, логичнее всего ?
            0
            хмм.. интересно :) надо будет попробовать :)
              0
              Утверждение неверно в корне. Доступ к подмонтированным сетевым дискам получает по умолчанию только тот кто монтирует. Там есть ключики, позволяющие дать доступ всем без ограничений или кому-то конкретному. Их и стоит использовать.
                0
                А если подумать ? Я ведь не зря про "физический доступ к компу" говорил. Подложить SUID'ный sash, перезагрузить комп - и "все флаги в гости будут к вам". Делов-то...

                Да, конечно ситуации разные бывают, но IMNSHO это "удобство" приближается к автологону под root'ов (как Linspire делает). Если вас не интересует сохранность ваших данных, то это, конечно, выход - но зачем тогда sshfs ? NFS настройте и будет вам щастя...
                  0
                  ну если брать физический доступ, до достаточно ключики забрать только :) Возможно вместе с винчестером :)
                    0
                    Хранить криптографические ключи без пароля мягко говоря, неразумно. Перед доступом к удалённому ресурсу ВСЕГДА спрашивается пароль, вне зависимости от логина и физического доступа к диску. В этом случае у злоумышленника доступ лишь к зашифрованным ключам.

                    Из этого вытекает крайняя опасность монтирования через PAM при логине.
                      0
                      Очень ндравится мне такая категоричность. А если основное что делается из под какого-либо аккаунта - это работа с удалёнными данными ? У меня, скажем, автоматом монтируются каталоги с удалённого сервера где лежат файлы, с которыми я работаю. Правда без ssh (kerberos+nfs) - точно так же через PAM должно быть возможно проверить пароль к ключу и если всё Ok - смонтировать удалённый сервер и пустить человека в систему чтобы он с ним смог работать. Зачем умножать сущности без необходимости ?
                        0
                        Предполагалось, что авторизация местная. Если же сетевая, то конечно же можно и единый пароль. Умножение сущностей имеет смысл при более чем одной защищаемой сущности.
                        0
                        товарищ прав, ключи либо в кармане, либо по паролю.
              –1
              SFTPD
                0
                > Vim, например, а так как это основной мой редактор — я искал способ сделать это.

                В vim есть способ намного проще:
                :e scp://hostname/...

                В :help netrw более подробно написано.
                  0
                  это точно проще? :))))
                    0
                    тем более, что я не только vim пользую.. чтото скопировать с хоста, картинки подгрузить.. мало ли .. когда это смонтировано в папке на локальной машине – проблем не будет :)
                      0
                      Если постоянно приходится работать через ssh, тогда наверно лучше подмонтировать.
                      А иногда заходить подправить можно и через netrw.
                      0
                      Интересная очень опция, огромное спасибо :) оч. помогла
                      0
                      народ, все куда проще! в Krusader есть протокол fish, который позволяет очень удобно заходить по ssh на удаленные системы и творить там дел :) и редактор Kate под рукой
                        0
                        Все сложнее. Если я хочу использовать не kate, a jedit? ultraedit? ecclipse? mcedit? gedit? еще какой-нибудь-edit?
                        fish c ними не дружит. Тем паче у меня, к примеру, не КДЕ.

                        Подобный способ очень хорош в плане унииверсальности.
                          0
                          ну тогда конечно :) Но если быстренько что-нибудь поправить... Тем более я обычно разрабатываю сайт локально в Eclipse, например, а потом уже выкладываю.
                        0
                        еще бы вместо apt-get использовать aptitude. Было бы просто прекрасно. :)
                          0
                          Респект! Давно искал подобную штуку.

                          Насчёт fstab там кто-то писал что автомонтироватся будет...так вот - "Вы просто не умеете его готовтить (с) :)))
                          На самом деле лучше действительно использовать fstab.
                          Я к сожалению не помню название опции, (но я думаю в man fstab или man mount это есть) которая отключает автомонтирование раздела при загрузке.
                          После того как добавили запись в fstab можно будет писать в командной строке:
                          #mount /path/to/mount_point
                          и точно так же
                          #umount /path/to/mount_point
                            0
                            >Я к сожалению не помню название опции

                            noauto
                            0
                            А кто знает, как такое же устроить про Windows? Ну примонтировать по ssh в виде диска.
                            Я нашел одну прогу - SFtpDrive, но она платная и не умеет вытягивать ключи из putty pageant. Вот из-за последнего то я ее и не куплю.
                              0
                              если из виндовс заходить на сервер то скоро сервер превратится в лучшем случае в рекламную площадку и спамо-рассыльщик )))

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое