Как автоматически смонтировать с помощью sshfs?


14

Я использую следующую команду для монтирования каталога ssh ubuntu на свой компьютер Ubuntu.

sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

У меня вопрос, могу ли я создать сценарий для этого на своем рабочем столе, где я могу сделать двойной щелчок и запустить этот сценарий, когда мне понадобится смонтировать диск, не вводя команду всегда вручную.

Ответы:


15

Вы можете создать модуль запуска и добавить его на панель запуска, перетащив туда файл .desktop-file:

    #!/usr/bin/env xdg-open

    [Desktop Entry]
    Version=1.0
    Type=Application
    Terminal=false
    Icon[en_US]=nautilus
    Name[en_US]=Connect to xy
    Exec=shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx
    #OR: to mount and than open in nautilus (note the '/dir' where ':dir' used to be)
    #Exec=nautilus sftp://user@192.xx.xx.xx.xx/dir/dir
    Comment[en_US]=Connect to xy via ssh
    Name=Connect to xy
    Comment=Connect to xy via ssh
    Icon=nautilus

Предложение - еще меньше работы:

Если вы хотите еще меньше работы (= автоматическое подключение) и графический интерфейс пользователя, вы можете попробовать Gigolo Установить жиголо . Он имеет возможность автоматического монтирования закладки при наличии файловой системы с закладками. Вы можете проверить это.

sudo apt-get install gigolo   # or use the install link above

Бегать gigolo . В настройках есть опция, которая переводит ее в автозапуск, а другая - активировать иконку в трее. Проверьте оба. Затем добавьте свою закладку.

Вот скриншот:

введите описание изображения здесь

Shell путь

Другим решением было бы поместить следующую строку в ваш crontab (редактировать /etc/crontabс привилегиями sudo):

@reboot sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

Но поскольку диспетчер паролей в Ubuntu отсутствует при запуске команды, вам необходимо использовать пару закрытых / открытых ключей без пароля для аутентификации на рассматриваемом сервере ssh (или аналогичный метод аутентификации). Это будет монтировать его при каждой перезагрузке.

Еще одним решением было бы отредактировать вашу /etc/fstab(если ваша версия Ubuntu предоставляет такую ​​возможность).


1
Я не могу использовать жиголо. Потому что я хочу использовать конкретную точку монтирования в моей домашней папке. Ваше первое решение кажется хорошим. Но я не уверен насчет имен файлов. Вы дали ".desktop-file" Это имя файла или расширение. Пожалуйста, дайте мне больше примеров по именованию файлов. Тогда я могу попробовать это.
BlueBird

Это расширение. Все средства запуска в Ubuntu заканчиваются на «.desktop». Создайте пустой файл. Скопируйте текст, который я разместил выше в него. Замените текст за «Name =» на любой, который вам подходит, и замените реальные пути в тексте за «Exec =». Затем сохраните его как «connect.desktop» или «mountxy.desktop» (например). После сохранения файла перетащите его на панель запуска или куда угодно.
con-f-use

Большой!! Это сработало.
BlueBird

8
OMG ... худшее название для программы.
Лекенштейн

Очевидно, что больше нет возможности добавить жиголо для автозапуска, так что вам придется сделать это самостоятельно. Запустите gnome-session-propertiesи добавьте /usr/bin/gigoloкоманду. Невозможно выбрать точку монтирования, но вы можете создать символическую ссылку на ваш домашний каталог (с помощью ln -s). Вы можете найти исходную точку монтирования, щелкнув правой кнопкой мыши папку в файловом менеджере и выбрав Open in Local Terminal.
Сеппо Энарви,

4

В этой ветке форума показан метод создания SSHFS с автоматическим монтированием, который мне кажется именно тем, что вы хотели бы сделать.


Поток довольно старый и для добавления зависимого от сети монтирования теперь можно использовать x-systemdи _netdevпараметры.
Тургон,

3

Вы можете просто напечатать это в сценарии оболочки и создать для него панель запуска на рабочем столе.

Например mountssh.sh :

#!/bin/bash
shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

убедитесь, chmod +x mountssh.shа затем нажмите на него выполнит

Кроме того , вы можете установить его с помощью GVFS, щелкнув правой кнопкой мыши на рабочем столе, а также создание ракеты - носителя с параметром URL: ssh://user@192.xx.xx.xx.xx/dir/dir. По умолчанию он монтируется в ~/.gvfs/.... Если вы хотите придерживаться /home/username/mount/xxx, вы можете создать символическую ссылку от gvfs к этому.


Я создал файл "mount-192.168.1.5.sh" на своем рабочем столе. Когда я дважды щелкаю по нему, он открывается с помощью gedit.
BlueBird

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

2

Вы могли бы даже сделать еще один шаг вперед, и автопромышленники позаботятся о монтаже для вас. Поскольку autofs не очень хорошо работает с аутентификацией с открытым ключом SSH (если вы не хотите создавать пару ключей без пароля для суперпользователя ), существуют инструменты, которые позволяют вам использовать SSH-ключи пользователя, ssh-agent и keychain:

  • autosshfs : автоматическое монтирование каждого пользователя с использованием конфигурации SSH
  • afuse : автомонтирование, реализованное с помощью FUSE

0

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

Я просто нажимаю на панель запуска:

введите описание изображения здесь


0

Я попытался использовать cron для автоматического монтирования каталога ssh, но это вызывает ошибку, говорящую Network is unreachable. Это потому, что выполнение задания cron слишком рано для установления IP-соединений. После того, как я вставил sleep перед sshfsкомандой, она успешно смонтировала каталог ssh.

sleep 5 && sshfs ......

Поэтому я сделал этот скрипт, чтобы выполнить мое требование.

#! /bin/sh
while true
do 
    ping -c1 -w1 ssh_server_ip > /dev/null && break
done
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 sshname:/mountpath /localmountpath
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.