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-ключі та переніс їх на комп'ютер за адресою 192.168.0.2, і я можу увійти в звичайний ssh ​​без пароля. Як я можу перестати запобіжник запитувати пароль, щоб гучність могла бути автоматично встановлена ​​під час завантаження?

Якщо це зовсім допомагає, я намагаюся підключитися до домашнього сервера під керуванням Debian від ноутбука під управлінням Arch Linux. Спасибі

Відповіді:


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 та додавання затримки_connect звідси /ubuntu/ 326977 / sshfs-не-монтується автоматично-при-завантаженні-незважаючи на-etc-fstab-конфігурацію .

Цей підручник я використав, щоб отримати свої 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/


Це посилання: 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

Це дійсно погано з точки зору безпеки. Краще створіть окремий набір ключів для root та додайте це також до санкціонованих_ ключів. Ніколи не слід копіювати приватні ключі навколо.
Крістіан Вольф

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.


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 як корінь і ввести цей рядок:

@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

яка працювала для мене врешті-решт


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ньому повинен монтуватися під час завантаження без необхідності вручну вводити пароль.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.