Автоматическое монтирование по sshfs, автоматический вход по ssh

Если необходимо работать с кодом на удаленном сервере то можно пойти несколькими путями:

  1. — качает tmp файл, редактирует и закачивает обратно на лету. Можно использовать редактор с подсветкой.
  2. Зайти по ssh и пользоваться консольными редакторами nano, vim и др, а так же mc. Необходимо постоянно вводить пароль, достает.
  3. Примонтировать файловую систему через FTP или SSH. В этом случае получим как будто папку в нашей файловой системе типа /mnt/server и тогда возможно использовать IDE с доступом ко всему проекту сразу.

Сейчас рассмотрим третий вариант. Монтирование по FTP осуществляется в с помощью пакета curlftpfs. Однако подключение будет очень медленным, отрывать большие проекты в IDE будет практически невозможно. Монтирование по ssh не смотря на шифрование поддерживает скорость 200-250кб.

Для начало надо установить пакет sshfs.

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

Пример использования sshfs

Чтобы отмонтировать

И вот в момент подключения будет запрошен пароль. Открытая сессия будет сохраняться до перезагрузки или завершения сеанса, т.е. не надо будет восстанавливать сессию как с ssh после перерыва в работе. Но когда работаешь с сервером каждый день, то подключаться каждый раз перед работой тоже надоедает. Стоит сделать по sshfs.

Для начала генерируем открытый и закрытый ключ.

На все вопросы генерации жмем Enter, пароль вводить не надо. В итоге будут созданы ключи в ~/.ssh директории.
id_rsa — закрытый ключ, должен быть секретным и никому не виден.
id_rsa.pub — открытый, его и будем использовать для входа без пароля.

Все, что остается сделать, это записать открытый ключ в файл .ssh/authorized_keys на сервере для нужного пользователя. Если для root то /root/.ssh/ иначе в /home/user/.ssh

Способ первый длинный:
Копируем открытый ключ на сервер. Выполняется на клиентской машине.

Копируем ключ в нужный файл. Выполняется на сервере.

Способ второй короткий:
Копируем с клиентской машины ключ сразу куда надо на сервер.

Та-да! Теперь еще можно выставить права на чтение на сервере:

Пробуем зайти по ssh.

Если вход произошел успешно и главное без ввода пароля, то полдела уже сделано. Теперь задействуем установленный ранее sshfs. Но сделаем это хитро. Создадим bash скрипт и добавим его в автозагрузку.

Тут например монтируем домашнюю удаленную папку в папку server на локальной машине.

Меняем права на выполнение для файла

В автозагрузку можно добавить просто команду или переместить этот файл в /etc/init.d/ или создать правило в cron с меткой @reboot.

Теперь при каждой перезагрузке файловая система будет монтироваться автоматически по sshfs и не надо вводить пароль!

Можно сделать автоматическое монтирование и без rsa ключей. Для этого надо добавить в автозагрузку команду:

Пароль берется автоматически из стандартного потока ввода-вывода.

Возможные проблемы.

1. Agent admitted failure to sign using the key.Permission denied (publickey).

Означает, что сгенерированный rsa ключ не установлен в системе, не привязан. Для привязки надо выполнить:

2. Что если не вышло выполнить команду из пункта 1 и выдалась ошибка
Could not open a connection to your authentication agent

Надо выполнить сначала

И уже после ssh-add из пункта 1.