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

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

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

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

8 ответов

Решение

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

    #!/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 предоставляет эту возможность).

РЕДАКТИРОВАТЬ: Я добавляю метод fstab, поскольку на этой странице об этом никто не говорит.


если вы не хотите взламывать и использовать встроенные расширенные возможности монтажа,

вам нужно использовать /etc/fstab и никогда не оглядываться назад.

user@host:/remote/folder /mount/point  fuse.sshfs noauto,x-systemd.automount,_netdev,IdentityFile=/home/name/.ssh/id_rsa, allow_other,reconnect 0 0

"noauto" остановит простые действия, такие как принудительное подключение чего-либо при загрузке, независимо от того, запущен netif или нет. "x-systemd.automount" - это умный демон, который знает, когда монтировать. Тег "_netdev" также указывает на то, что он использует сетевые устройства. таким образом, нетрудно будет дождаться, пока сеть не поднимется.

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

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

Например 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 один к этому.

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

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

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

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

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

введите описание здесь

Поскольку ни один из ответов не сработал для меня, и мне удалось понять это, я решил, что должен поделиться этим с миром. Мое решение также автоматически переподключается, когда крепление отключается, и работает, когда машина загружается без проблем. Просто добавьте это в свой /etc/fstabфайл (однострочный):

      user@user.example.org:/  /mnt/location   fuse.sshfs    defaults,allow_other,_netdev,IdentityFile=/root/.ssh/id_rsa,default_permissions,uid=YOURIDHERE,gid=YOURIDHERE,follow_symlinks,reconnect    0  0

Некоторые примечания:

Очевидно, для этого вам НУЖНЫ SSH-ключи. Вы можете скопировать свои ключи SSH, используя ssh-copy-idили вручную - какой вам удобнее. Другими словами, автомонтирование работает только с ключами SSH. Вы можете устранить неполадки с SSH-соединением, отредактировав файл fstab, а затем позвонив mount -av.

allow_otherпозволяет, когда корень смонтировал автомонтирование, не только корень может получить к нему доступ.

IdentityFileявляется необходимым указателем на ключ SSH, о чем свидетельствует Arch Wiki, но, по-видимому, не описано, какой синтаксис он использует. Только не забудьте заменить заполнители для uid и gid ;) Я думаю, что вы можете разделить идентификаторы запятыми, но я не пробовал.

Это было очень полезно для моего экземпляра Nextcloud, так как я хотел удаленно смонтировать внешний ящик для хранения и follow_symlinksобеспечивает необходимую функциональность для поддержки символических ссылок в монтировании, что требуется для Nextcloud, когда вы начинаете использовать внешнее хранилище и подобные вещи.

Другие вопросы по тегам