sshfs fragt immer nach dem Passwort in fstab?

20

Ich versuche, ein sshfs-Mount in / etc / fstab mit der folgenden Zeile einzugeben:

sshfs#[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

Damit wird dieses Volume beim Booten gemountet. Nach dem Booten passiert nichts, aber wenn ich den Befehl sudo mount -a verwende, werde ich immer zur Eingabe des Passworts aufgefordert. Ich habe SSH-Schlüssel eingerichtet und sie unter 192.168.0.2 auf den Computer übertragen und kann mich ohne Passwort bei normalem ssh anmelden. Wie kann ich verhindern, dass fuse nach meinem Passwort fragt, damit das Volume beim Booten automatisch bereitgestellt wird?

Wenn es überhaupt hilft, versuche ich, von einem Laptop mit Arch Linux aus eine Verbindung zu einem Heimserver herzustellen, auf dem Debian ausgeführt wird. Vielen Dank

bedenklich
quelle

Antworten:

13

Die sshschlüsselbasierte Authentifizierung funktioniert nur, wenn der Prozess Ihren Schlüssel findet. Vermutlich haben Sie Ihren Schlüssel in Ihrem Home-Verzeichnis. aber Sie haben nie gesagt, sshfswo Sie nach einem Schlüssel suchen sollen. Beim Booten werden rootalle Dateisysteme gemountet, daher muss der Schlüssel entweder in /root/.sshoder referenziert sein /root/.ssh/config.

Ich empfehle, das Dateisystem nach dem Anmelden und als eigenen Benutzer zu mounten. Fügen Sie dies in ein Skript ein, das ausgeführt wird, wenn Sie sich anmelden:

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

Legen Sie einen Aliasnamen genannt homeserverin Ihrem ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli
Gilles 'SO - hör auf böse zu sein'
quelle
Ahh, das ist eine bessere Methode, ich hätte nicht gedacht, es in mein Anmeldeskript aufzunehmen. Vielen Dank!
Semiserious
Seien Sie vorsichtig bei der Verwendung ~im Einhängepunkt. Wenn Sie anstelle eines Terminals ein Startsymbol auf dem Bedienfeld verwenden, um den Befehl auszuführen, wird der ~möglicherweise nicht als ausgewertet, /home/und der Befehl schlägt fehl.
Nick
@Nick Wenn Sie eine grafische Benutzeroberfläche verwenden, verfügt diese möglicherweise über ein spezielles Tool für die automatische Bereitstellung. Wenn Sie meiner Antwort folgen, müssen Sie die beiden Befehle in ein Shell-Skript einfügen. Das Startsymbol würde dieses Skript ausführen.
Gilles 'SO - hör auf böse zu sein'
10

Ich konnte sshfs mit Ubuntu 14.04 über fstab bereitstellen, indem ich die folgende Syntax als Standardbenutzer verwendete (beachten Sie, dass in CAPS alles eine Variable ist, die Sie ausfüllen müssen):

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

Dies ist eine Kombination der Informationen, die hier zu finden sind: /superuser/669287/automount-sshfs-using-fstab-without-mount-a und das Hinzufügen des delay_connect von hier aus: /ubuntu/ 326977 / sshfs-wird-trotz-etc-fstab-Konfiguration-nicht-automatisch-beim-Booten-gemountet .

Ich habe dieses Tutorial verwendet, um meine USER_ID und USER_GID abzurufen: https://kb.iu.edu/data/adwf.html

Verwenden Sie den Befehl id, um die UID oder GID eines Benutzers in Unix zu suchen. Um die UID eines bestimmten Benutzers zu finden, geben Sie an der Unix-Eingabeaufforderung Folgendes ein:

id -u username

Ersetzen Sie den Benutzernamen durch den Benutzernamen des entsprechenden Benutzers. Um die GID eines Benutzers zu finden, geben Sie an der Unix-Eingabeaufforderung Folgendes ein:

id -g username

Wenn Sie ein vollständiges Tutorial wünschen, finden Sie es unter https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/

variuxDavid
quelle
Dieser Link: variux.com/blog/?p=161 scheint nicht mehr zu funktionieren ...
Christian Casutt
@ Christian Muggli Vielen Dank für Ihren Kommentar. Ich habe die vollständige Tutorial-Adresse aktualisiert. Ich habe das Tutorial jedoch schon lange nicht mehr getestet. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid
5

Ich hatte das gleiche problem

Ich hatte vorher ssh keys über das ssh-keygenund dann eingerichtetssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh funktionierte einwandfrei, ohne mich nach einem Passwort zu fragen, und ich war verwirrt, warum sshfs das Passwort immer noch haben wollte ...

Das heißt,

ssh [email protected] 

funktionierte einwandfrei, aber sshfs fragte immer noch nach einem Passwort, als ich tippte

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Wie Gilles oben erklärt hat, sshfswurde im Root-Verzeichnis nach den notwendigen Schlüsseln gesucht.

Daher habe ich dieses Problem gelöst, indem ich einfach die Dateien id_rsa und id_rsa.pub aus dem versteckten .ssh-Ordner meines Basisordners in den .ssh-Ordner des Stammordners kopierte, d. H

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

Dann funktionierte die Eingabe von Folgendem, ohne mich um ein Passwort zu kümmern:

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other
CMP
quelle
Das ist wirklich sehr, sehr schlecht aus Sicht der Sicherheit. Erstellen Sie besser einen separaten Schlüsselsatz für root und fügen Sie diesen auch zu authorized_keys hinzu. Sie sollten niemals private Schlüssel kopieren.
Christian Wolf
3

Wenn Sie möchten, dass es ohne Passwort bootet, müssen Sie einen öffentlichen / privaten SSH-Schlüssel ohne Passwort erstellen. Es wird nicht empfohlen, aber Sie können diese Dateien zumindest mit einem chmod 400Root-Benutzer schützen .

Danach müssen Sie wie gewohnt den öffentlichen Schlüssel auf den Mount-Punkt kopieren:

ssh-copy-id -i my_new_key.pub [email protected]

Und Sie müssen sshfs anweisen, diesen Schlüssel zu verwenden.

[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0
Coren
quelle
2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Tom Hale
1
@ TomHale statt ,SSHOPT='IdentityFile /path/to/private/key'es ist einfach,IdentityFile /path/to/private/key
Pulkitsinghal
2

Funktioniert für mich perfekt unter Debian 8.2 und fügt die folgende Zeile hinzu 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

Hostname gibt an, dass der Benutzer des Remoteservers (Ordner, von dem aus gemountet werden soll) lokal und remote identisch ist. (einfacher)

Stellen Sie sicher , dass lokal den SSH - Schlüssel für den Benutzer erstellt ssh-keygenund die Verwendung ssh-copy-idder Schlüssel zum Remote - Server (Hostname) zu kopieren.

Sie finden user_idund group_idfür den Benutzer in lokalen Server/etc/passwd .

Stellen Sie außerdem sicher, dass der Benutzer über Lese- / Schreibberechtigungen für den Ordner verfügt path/to/localmountpoint.

LincolnP
quelle
2

Sie können SSHFS beim Start tatsächlich ohne öffentlichen Schlüssel bereitstellen, indem Sie die Option password_stdin verwenden, jedoch nicht mit fstab.

Was Sie brauchen, ist eine kleine Skriptdatei und Cron.

Bitte beachten Sie, dass ein öffentlicher Schlüssel immer die bessere Wahl ist. Aber manchmal funktionieren öffentliche Schlüssel nicht (ich hatte dieses Problem selbst ein paar Mal). Bitte beachten Sie, dass die Skriptdatei das Passwort in Klartext enthält. Stellen Sie daher sicher, dass nur root die Berechtigung für diese Datei hat!

Die Skriptdatei kann folgendermaßen aussehen (/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

Um dies beim Start auszuführen, können Sie crontab als root verwenden und diese Zeile eingeben:

@reboot /root/automount.sh

Wie oben erwähnt, sollten Sie sicherstellen, dass absolut niemand die Datei lesen kann, da sie ein Klartext-Passwort enthält!

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

Inzwischen wird Ihr System nach jedem Neustart das SSHFS automatisch mithilfe von Anmeldeinformationen bereitstellen.

Nico
quelle
0

Hatte das selbe Problem. Am Ende half es, entweder den Typ auf einfache Sicherung zu setzen oder (was wahrscheinlicher ist) die Optionen zu kürzen, um:

fuse reconnect,idmap=user,allow_other,default_permissions

was am Ende für mich gearbeitet hat

Kangur
quelle
0

Wenn Sie versuchen, eine Verbindung zu einem Server herzustellen, der keine Schlüssel unterstützt, und Sie möchten dennoch, dass die Verbindung automatisch hergestellt wird, können Sie sshpassIhr Kennwort selbst mit sshfsund sogar mit eingebenfstab .

Wenn Sie beispielsweise Folgendes eingeben /etc/fstab:

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

Tragen Sie dann das Passwort in den Dateinamen ein, der in /etc/fstab:

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

Stellen Sie sicher, dass Sie Folgendes installiert haben sshpass:

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

Dann sollte es klappen:

mount /mnt/here

Möglicherweise müssen Sie sshden Server zuerst einmal anrufen, um seinen Schlüssel zu bestätigen. Danach sollte dies ohne manuelle Interaktion funktionieren und mit dem darin enthaltenen autoFlag fstabbeim Start bereitgestellt werden, ohne dass das Kennwort manuell eingegeben werden muss.

Bösartig
quelle