Как автоматически смонтировать с помощью 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:
Я попытался использовать 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, когда вы начинаете использовать внешнее хранилище и подобные вещи.