sshfs chiede sempre la password in fstab?


20

Sto cercando di inserire un mount sshfs in / etc / fstab con la seguente riga:

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

In modo che questo volume sia montato all'avvio. Dopo l'avvio, non succede nulla, ma quando uso il comando sudo mount -a, mi viene sempre richiesta la password. Ho impostato le chiavi SSH e le ho trasferite sul computer a 192.168.0.2 e posso accedere a SSH normale senza password. Come posso impedire a miccia di richiedere la mia password in modo che il volume possa essere montato automaticamente all'avvio?

Se tutto ciò aiuta, sto cercando di connettermi a un server di casa che esegue Debian da un laptop che esegue Arch Linux. Grazie

Risposte:


13

L'autenticazione basata su chiave può funzionare solo se il sshprocesso trova la tua chiave. Presumibilmente hai la tua chiave nella tua home directory; ma non hai mai detto sshfsdove cercare una chiave. Al momento dell'avvio, rootmonterebbe tutti i filesystem, pertanto la chiave deve essere inserita /root/.ssho referenziata /root/.ssh/config.

Consiglio di montare il filesystem dopo aver effettuato l'accesso e come proprio utente. Inseriscilo in uno script che viene eseguito quando accedi:

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

Inserisci un alias chiamato homeservernel tuo ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli

Ah, è un modo migliore di farlo, non pensavo di inserirlo nel mio script di accesso. Grazie!
semiserie il

Fare attenzione usando ~nel punto di montaggio. Se si utilizza un'icona di avvio sul pannello per eseguire il comando anziché un terminale, ~potrebbe non essere valutato come /home/e il comando non riuscirà.
Nick,

@Nick Se stai usando una GUI, potrebbe avere uno strumento dedicato al montaggio automatico. Se segui la mia risposta, devi mettere i due comandi in uno script di shell; l'icona di avvio avrebbe eseguito quello script.
Gilles 'SO- smetti di essere malvagio' l'

10

Sono stato in grado di far montare sshfs tramite fstab con Ubuntu 14.04 usando la seguente sintassi come utente standard (nota che qualsiasi cosa in CAPS è una variabile da compilare):

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

Questa è una combinazione delle informazioni trovate qui /superuser/669287/automount-sshfs-using-fstab-without-mount-a e l'aggiunta di delay_connect da qui /ubuntu/ 326977 / sshfs-non-viene-montato-automaticamente-all'avvio-nonostante-etc-fstab-configuration .

Ho usato questo tutorial per ottenere USER_ID e USER_GID: https://kb.iu.edu/data/adwf.html

Per trovare l'UID o GID di un utente in Unix, utilizzare il comando id. Per trovare l'UID di un utente specifico, al prompt Unix, immettere:

id -u username

Sostituisci il nome utente con il nome utente dell'utente appropriato. Per trovare il GID di un utente, al prompt Unix, immettere:

id -g username

Inoltre, se desideri un tutorial completo, sarà pubblicato su https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/


Quel link: variux.com/blog/?p=161 sembra non funzionare più ...
Christian Casutt,

@ChristianMuggli grazie per il tuo commento. Ho aggiornato l'indirizzo completo del tutorial. Non ho testato il tutorial per molto tempo, tuttavia. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid

5

Ho avuto lo stesso problema.

Avevo precedentemente impostato i tasti SSH tramite ssh-keygene quindissh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.100

ssh ha funzionato bene senza chiedermi una password, quindi ero confuso sul perché sshfs voleva ancora la password ...

Vale a dire

ssh root@192.168.0.100 

ha funzionato bene, tuttavia sshfs ha ancora chiesto una password quando ho digitato

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

Come spiegato sopra Gilles, sshfsstava cercando nella directory principale le chiavi necessarie.

Pertanto, ho risolto questo problema semplicemente copiando i file id_rsa e id_rsa.pub dalla cartella nascosta .ssh della mia cartella principale nella cartella .ssh della radice, ad es.

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

Quindi, digitando quanto segue ha funzionato senza infastidirmi per una password:

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

Questo è davvero molto male dal punto di vista della sicurezza. Meglio creare un set separato di chiavi per root e aggiungerlo anche a authorized_keys. Non dovresti mai copiare chiavi private in giro.
Christian Wolf,

3

Se vuoi che si avvii senza una password, dovrai creare una chiave ssh pubblica / privata senza password. Non è consigliabile, ma puoi almeno proteggere quei file con un chmod 400utente root.

Dopodiché, come al solito, dovrai copiare la chiave pubblica sul punto di montaggio:

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

E dovrai dire a sshfs di usare questa chiave.

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'
Tom Hale,

1
@TomHale invece ,SSHOPT='IdentityFile /path/to/private/key'è semplicemente,IdentityFile /path/to/private/key
pulkitsinghal

2

Funziona perfettamente con me su Debian 8.2 aggiungendo la seguente riga a 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

Il nome host indica che l'utente del server remoto (cartella da cui montare) è lo stesso localmente e in remoto. (Più facile)

Assicurarsi di aver creato localmente la chiave ssh per l'utente utilizzando ssh-keygene utilizzare ssh-copy-idper copiare la chiave sul server remoto (nome host).

È possibile trovare user_ide group_idper l'utente nel server locale /etc/passwd.

Assicurarsi inoltre che l'utente disponga delle autorizzazioni di lettura / scrittura nella cartella path/to/localmountpoint.


2

In realtà puoi montare SSHFS senza chiave pubblica all'avvio usando l'opzione password_stdin, ma non con fstab.

Ciò di cui hai bisogno è un piccolo file di script e cron.

Tieni presente che la chiave pubblica è sempre una scelta migliore. Ma a volte le chiavi pubbliche non funzionano (ho riscontrato questo problema alcune volte da solo). Si noti che il file di script conterrà la password in chiaro. Quindi dovresti assicurarti che solo root abbia le autorizzazioni per questo file!

Il file di script può essere simile al seguente (/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

Per eseguirlo all'avvio puoi usare crontab come root e inserire questa riga:

@reboot /root/automount.sh

Come detto sopra, dovresti assicurarti che nessuno sia in grado di leggere il file in quanto contiene password in testo semplice!

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

Ormai, dopo ogni riavvio il sistema monterà automaticamente SSHFS utilizzando le credenziali.


0

Ho avuto lo stesso problema. Alla fine ha aiutato a impostare type su simple fuse o (che è più probabilmente) troncando le opzioni a:

fuse reconnect,idmap=user,allow_other,default_permissions

che ha funzionato per me alla fine


0

Se stai provando a connetterti a un server che non supporta le chiavi e vuoi comunque che sia automatico, puoi usare sshpassper digitare la password per te anche con sshfse persino in fstab.

Ad esempio, se inserisci qualcosa di simile a questo in /etc/fstab:

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

Quindi inserire la password nel nome file specificato in /etc/fstab:

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

Assicurati di aver installato sshpass:

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

Quindi dovrebbe funzionare:

mount /mnt/here

Potrebbe essere necessario sshprima una volta al server per confermare la sua chiave, ma dopo ciò dovrebbe funzionare senza interazione manuale e con il autoflag in fstabesso montato dovrebbe essere avviato all'avvio senza la necessità di inserire manualmente la password.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.