sshfs всегда спрашивает пароль в fstab?

20

Я пытаюсь ввести монтирование sshfs в / etc / fstab со следующей строкой:

sshfs#oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

Так что этот том монтируется при загрузке. После загрузки ничего не происходит, но когда я использую команду sudo mount -a, мне всегда предлагается ввести пароль. Я настроил SSH Keys и перенес их на компьютер по адресу 192.168.0.2, и могу войти в обычный ssh ​​без пароля. Как я могу запретить предохранителю запрашивать мой пароль, чтобы том мог автоматически монтироваться во время загрузки?

Если это вообще помогает, я пытаюсь подключиться к домашнему серверу под управлением Debian с ноутбука под управлением Arch Linux. Благодарность

semiserious
источник

Ответы:

13

Проверка подлинности на основе ключей может работать только в том случае, если sshпроцесс может найти ваш ключ. Вероятно, у вас есть ваш ключ в вашем домашнем каталоге; но ты никогда не говорил, sshfsгде искать ключ. Во время загрузки он rootмонтирует все файловые системы, поэтому ключ должен быть либо в, либо на него /root/.sshесть ссылка /root/.ssh/config.

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

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

Поместите псевдоним homeserverв ваш ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli
Жиль "ТАК - прекрати быть злым"
источник
Ааа, это лучший способ сделать это, я не думал вставлять это в свой сценарий входа в систему. Благодарность!
Полуответ
Будьте осторожны при использовании ~в точке монтирования. Если вы используете значок панели запуска на панели для запуска команды вместо терминала, это ~может не оцениваться, так как /home/команда не выполнится .
Ник
@Nick Если вы используете графический интерфейс, он может иметь инструмент для автоматического монтирования. Если вы последуете моему ответу, вы должны поместить две команды в скрипт оболочки; значок запуска запускает этот скрипт.
Жиль "ТАК - перестань быть злым"
10

Мне удалось смонтировать sshfs через fstab с Ubuntu 14.04, используя следующий синтаксис в качестве обычного пользователя (заметьте, что в CAPS есть переменная, которую вы должны заполнить):

USER@HOST:/REMOTE_DIR /LOCAL_DIR fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

Это сочетание информации, найденной здесь /superuser/669287/automount-sshfs-using-fstab-without-mount-a и добавление delay_connect отсюда /ubuntu/ 326977 / sshfs-не-монтируется-автоматически-при-загрузке-несмотря на-etc-fstab-configuration .

Я использовал этот учебник, чтобы получить свои USER_ID и USER_GID: https://kb.iu.edu/data/adwf.html

Чтобы найти UID или GID пользователя в Unix, используйте команду id. Чтобы найти UID конкретного пользователя, в командной строке Unix введите:

id -u username

Замените имя пользователя соответствующим именем пользователя. Чтобы найти GID пользователя, в командной строке Unix введите:

id -g username

Кроме того, если вам нужен полный учебник, он будет размещен по адресу https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/

variuxDavid
источник
Эта ссылка: variux.com/blog/?p=161, похоже, больше не работает ...
Кристиан Кашутт
@ChristianMuggli спасибо за ваш комментарий. Я обновил полный учебный адрес. Однако я давно не тестировал учебник. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid
5

У меня такая же проблема.

Я ранее настроил ключи SSH через, ssh-keygenа затемssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.100

SSH работал нормально, не спрашивая у меня пароль, поэтому я был озадачен тем, почему sshfs все еще хотел пароль ...

То есть

ssh root@192.168.0.100 

работал нормально, однако sshfs все еще спрашивал пароль, когда я набирал

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Как объяснил выше Жиль, sshfsискал в корневом каталоге необходимые ключи.

Поэтому я решил эту проблему, просто скопировав файлы id_rsa и id_rsa.pub из скрытой папки .ssh моей домашней папки в корневую папку .ssh, т.е.

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

Затем, набрав следующее, получалось, не беспокоя меня о пароле:

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other
CMP
источник
Это действительно очень плохо с точки зрения безопасности. Лучше создайте отдельный набор ключей для root и добавьте это также в authorized_keys. Вы никогда не должны копировать закрытые ключи.
Кристиан Вольф
3

Если вы хотите, чтобы он загружался без пароля, вам нужно создать открытые / закрытые ключи ssh без пароля. Это не рекомендуется, но вы можете по крайней мере защитить эти файлы от имени chmod 400пользователя root.

После этого, как обычно, вам нужно скопировать открытый ключ в точку монтирования:

ssh-copy-id -i my_new_key.pub oli@192.168.0.2

И вам нужно сказать sshfs использовать этот ключ.

oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0
Корен
источник
2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Том Хейл,
1
@ TomHale вместо ,SSHOPT='IdentityFile /path/to/private/key'этого просто,IdentityFile /path/to/private/key
pulkitsinghal
2

У меня отлично работает на Debian 8.2, добавив следующую строку fstab:

user@hostname:/path/to/localmountpoint /path/to/remotemountpoint fuse.sshfs _netdev,user,port=(if_not_22),idmap=user,transform_symlinks,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions,uid=user_id,gid=group_id 0 0

Имя хоста указывает, что удаленный сервер (папка для подключения) один и тот же локально и удаленно. (Полегче)

Убедитесь, что вы локально создали ключ ssh для пользователя ssh-keygenи используете его ssh-copy-idдля копирования ключа на удаленный сервер (имя хоста).

Вы можете найти user_idи group_idдля пользователя на локальном сервере /etc/passwd.

Также убедитесь, что у пользователя есть права на чтение / запись в папке path/to/localmountpoint.

LincolnP
источник
2

На самом деле вы можете монтировать SSHFS без открытого ключа при запуске, используя опцию password_stdin, но не с помощью fstab.

Что вам нужно, это небольшой файл скрипта и cron.

Помните, что открытый ключ всегда лучший выбор. Но иногда открытые ключи не работают (у меня сам был такой вопрос несколько раз). Обратите внимание, что файл сценария будет содержать пароль в виде обычного текста. Поэтому вы должны убедиться, что только root имеет разрешение на этот файл!

Файл сценария может выглядеть следующим образом (/root/automount.sh):

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

Чтобы запустить это при запуске, вы можете использовать crontab как root и ввести следующую строку:

@reboot /root/automount.sh

Как указано выше, вы должны убедиться, что абсолютно никто не сможет прочитать файл, так как он содержит простой текстовый пароль!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

К настоящему времени после каждой перезагрузки ваша система будет автоматически монтировать SSHFS с использованием учетных данных.

Нико
источник
0

Была такая же проблема. В конце концов, это помогло либо установить тип в простой предохранитель, либо (что более вероятно) урезать опции до:

fuse reconnect,idmap=user,allow_other,default_permissions

который работал для меня в конце

Kangur
источник
0

Если вы пытаетесь подключиться к серверу, который не поддерживает ключи, и по-прежнему хотите, чтобы он был автоматическим, вы можете sshpassввести свой пароль для вас даже с sshfsи даже внутри fstab.

Например, если вы поместите что-то похожее на это в /etc/fstab:

sshfs#username@host:/  /mnt/here   fuse   auto,ssh_command=sshpass\040-f\040/root/.ssh/host.password\040ssh  0  0

Затем введите пароль в имя файла, указанное в /etc/fstab:

echo 'secret' > /root/.ssh/host.password

Убедитесь, что вы установили sshpass:

pacman -S sshpass  # if you're using Arch Linux

Тогда это должно работать:

mount /mnt/here

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

Malvineous
источник