sshfs zawsze pyta o hasło w fstab?


20

Próbuję wprowadzić mount sshfs w / etc / fstab w następującym wierszu:

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

Aby ten wolumin został zamontowany podczas rozruchu. Po uruchomieniu nic się nie dzieje, ale kiedy używam polecenia sudo mount -a, zawsze pojawia się monit o hasło. Skonfigurowałem klucze SSH i przesłałem je do komputera pod adresem 192.168.0.2 i mogę zalogować się do zwykłego ssh bez hasła. Jak mogę powstrzymać bezpiecznik przed pytaniem o moje hasło, aby wolumin mógł być automatycznie montowany podczas uruchamiania?

Jeśli to w ogóle pomaga, próbuję połączyć się z serwerem domowym z systemem Debian z laptopa z systemem Arch Linux. Dzięki

Odpowiedzi:


13

Uwierzytelnianie oparte sshna kluczach może działać tylko wtedy, gdy proces może znaleźć Twój klucz. Prawdopodobnie masz swój klucz w katalogu domowym; ale nigdy nie powiedziałeś, sshfsgdzie szukać klucza. W czasie uruchamiania rootinstalowałby wszystkie systemy plików, dlatego klucz musi być w /root/.sshlub odwoływać się do niego /root/.ssh/config.

Zalecam zamontowanie systemu plików po zalogowaniu i jako własny użytkownik. Umieść to w skrypcie, który jest wykonywany podczas logowania:

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

Wpisz alias wywoływany homeserverw ~/.ssh/config:

Host homeserver
HostName 192.168.0.2
User oli

Ahh, to lepszy sposób na zrobienie tego, nie pomyślałem o wpisaniu go do skryptu logowania. Dzięki!
półseryjny

Ostrożnie korzystaj ~z punktu montowania. Jeśli używasz ikony programu uruchamiającego na panelu do uruchomienia polecenia zamiast terminala, ~może on nie zostać oceniony jako /home/i polecenie zakończy się niepowodzeniem.
Nick

@Nick Jeśli używasz GUI, może mieć narzędzie dedykowane automatycznemu montowaniu. Jeśli zastosujesz się do mojej odpowiedzi, umieścisz dwa polecenia w skrypcie powłoki; ikona programu uruchamiającego uruchomi ten skrypt.
Gilles „SO- przestań być zły”

10

Byłem w stanie zmusić sshfs do montowania poprzez fstab z Ubuntu 14.04, wykonując poniższą składnię jako standardowy użytkownik (zwróć uwagę, że wszystko w CAPS jest zmienną, którą należy wypełnić):

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

Jest to kombinacja informacji znalezionych tutaj /superuser/669287/automount-sshfs-using-fstab-without-mount-a i dodanie tutaj delay_connect /ubuntu/ 326977 / sshfs-is-not-montaż-automatycznie-podczas-rozruchu-pomimo-etc-fstab-konfiguracji .

Skorzystałem z tego samouczka, aby uzyskać identyfikator USER_ID i USER_GID: https://kb.iu.edu/data/adwf.html

Aby znaleźć identyfikator UID lub GID użytkownika w systemie Unix, użyj polecenia id. Aby znaleźć identyfikator użytkownika konkretnego użytkownika, w wierszu polecenia systemu Unix wpisz:

id -u username

Zastąp nazwę użytkownika odpowiednią nazwą użytkownika. Aby znaleźć GID użytkownika, w wierszu polecenia systemu Unix wpisz:

id -g username

Ponadto, jeśli chcesz uzyskać pełny samouczek, zostanie on opublikowany na stronie https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/


Ten link: variux.com/blog/?p=161 wydaje się już nie działać ...
Christian Casutt

@ChristianMuggli dziękuję za komentarz. Zaktualizowałem pełny adres samouczka. Jednak od dłuższego czasu nie testowałem samouczka. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid

5

Miałem ten sam problem.

Miałem wcześniej skonfigurowane klucze ssh za pośrednictwem ssh-keygena następniessh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.100

ssh działało dobrze bez pytania o hasło, więc byłem zdezorientowany, dlaczego sshfs nadal chce hasła ...

To jest do powiedzenia,

ssh root@192.168.0.100 

działało dobrze, jednak sshfs wciąż pytał o hasło podczas pisania

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

Jak wyjaśnił Gilles powyżej, sshfsszukał w katalogu głównym niezbędnych kluczy.

Dlatego rozwiązałem ten problem, po prostu kopiując pliki id_rsa i id_rsa.pub z ukrytego folderu .ssh mojego folderu domowego do folderu .ssh katalogu głównego, tj.

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

Następnie wpisanie następującego działało bez kłopotania się hasłem:

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

Jest to naprawdę bardzo złe z punktu widzenia bezpieczeństwa. Lepiej utwórz oddzielny zestaw kluczy dla roota i dodaj go również do uprawnionych kluczy. Nigdy nie powinieneś kopiować kluczy prywatnych.
Christian Wolf

3

Jeśli chcesz, aby uruchamiał się bez hasła, musisz utworzyć publiczne / prywatne klucze ssh bez hasła. Nie jest to zalecane, ale możesz przynajmniej chronić te pliki chmod 400jako użytkownik root.

Następnie, jak zwykle, musisz skopiować klucz publiczny w punkcie montowania:

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

I musisz powiedzieć sshfs, aby używał tego klucza.

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 zamiast ,SSHOPT='IdentityFile /path/to/private/key'tego jest po prostu,IdentityFile /path/to/private/key
pulkitsinghal

2

Działa dla mnie doskonale w Debianie 8.2, dodając następujący wiersz do 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

Nazwa hosta wskazuje, że użytkownik zdalnego serwera (folderu, z którego ma zostać zamontowane) jest taki sam lokalnie i zdalnie. (łatwiej)

Upewnij się, że utworzyłeś lokalnie klucz ssh dla użytkownika używającego ssh-keygeni używającego ssh-copy-iddo skopiowania klucza na zdalny serwer (nazwę hosta).

Możesz znaleźć user_idi group_iddla użytkownika na serwerze lokalnym /etc/passwd.

Upewnij się również, że użytkownik ma uprawnienia do odczytu / zapisu w folderze path/to/localmountpoint.


2

Możesz faktycznie zamontować SSHFS bez klucza publicznego podczas uruchamiania, używając opcji password_stdin, ale nie z fstab.

Potrzebujesz małego pliku skryptu i crona.

Należy pamiętać, że klucz publiczny zawsze jest lepszym wyborem. Ale czasami klucze publiczne nie działają (sam miałem ten problem kilka razy). Pamiętaj, że plik skryptu będzie zawierał hasło w postaci jawnej. Dlatego powinieneś upewnić się, że tylko root ma jakiekolwiek uprawnienia do tego pliku!

Plik skryptu może wyglądać następująco (/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

Aby uruchomić to przy starcie, możesz użyć crontab jako root i wprowadzić następujący wiersz:

@reboot /root/automount.sh

Jak wspomniano powyżej, należy upewnić się, że absolutnie nikt nie może odczytać pliku, ponieważ zawiera on zwykłe hasło tekstowe!

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

Do tej pory po każdym ponownym uruchomieniu system automatycznie zainstaluje SSHFS przy użyciu poświadczeń.


0

Miałem ten sam problem. W końcu pomogło albo ustawić typ na prosty bezpiecznik, albo (co jest bardziej prawdopodobne) skrócić opcje, aby:

fuse reconnect,idmap=user,allow_other,default_permissions

które w końcu działało dla mnie


0

Jeśli próbujesz połączyć się z serwerem, który nie obsługuje kluczy i nadal ma to być automatyczne, można użyć sshpassdo wpisania hasła dla ciebie nawet sshfs, a nawet w fstab.

Na przykład, jeśli umieścisz coś podobnego do tego w /etc/fstab:

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

Następnie wpisz hasło w nazwie pliku określonej w /etc/fstab:

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

Upewnij się, że zainstalowałeś sshpass:

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

To powinno działać:

mount /mnt/here

Być może trzeba będzie sshraz najpierw udać się do serwera, aby potwierdzić jego klucz, ale potem powinno to działać bez ręcznej interakcji, a po umieszczeniu autoflagi w fstabnim należy zamontować w czasie uruchamiania bez konieczności ręcznego wprowadzania hasła.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.