sshfs nie instaluje się automatycznie podczas rozruchu, pomimo konfiguracji / etc / fstab


24

Konfigurując stację roboczą Ubuntu (13.04), próbuję zainstalować zdalny system plików (przez ssh).

Aktualna konfiguracja

  • Stworzyłem użytkownika someuser i dodaje go do bezpiecznika grupie

  • Mój wpis fstab brzmi:

    sshfs#someuser@remote.com:/remote_dir  /media/remote_dir/   fuse    auto,_netdev,port=22,user,allow_other,noatime,follow_symlinks,IdentityFile=/home/someuser/.ssh/id_rsa,reconnect     0       0
    

z mojego zrozumienia:

  • auto : wyraźnie prosi o zamontowanie zdalnego fs podczas rozruchu
  • _netdev : poczekaj na uruchomienie interfejsu przed próbą zamontowania
  • użytkownik : pozwala każdemu użytkownikowi poprosić o zamontowanie tej konkretnej zdalnej lokalizacji (bezużyteczne z punktu widzenia użytkownika root instalującego go automatycznie podczas rozruchu)
  • allow_other : pozwoli każdemu użytkownikowi (w grupie bezpieczników?) uzyskać dostęp do zamontowanego fs
  • IdentityFile : wskazuje na klucz prywatny sparowany z kluczem publicznym dodanym w /home/someuser/.ssh/authorized_key komputera zdalnego.
  • reconnect : Nie jestem pewien ... Czy spróbujesz połączyć się ponownie, jeśli połączenie zostanie utracone?

Problem

  • Podczas uruchamiania loguję się przy użyciu użytkownika , odpalam terminal, a katalog / media / remote_dir jest pusty.

  • Ale od tego samego użytkownika (lub roota) mogę go zamontować, pisząc:

    mount sshfs#someuser@remote.com:/remote_dir
    

    Jest również montowany automatycznie, jeśli kliknę na remote_dir w przeglądarce plików.

Wszelkie wskazówki dotyczące tego, co może brakować?


Czy kiedykolwiek to rozgryzłeś? Mam ten sam problem na 64-bitowym komputerze z systemem Ubuntu 14.04.
glibdud

Widząc popularność tego pytania w porównaniu z liczbą odpowiedzi, zrezygnowałem z podejścia fstab. Postanowiłem ugryźć kulę i nauczyć się korzystać z Automount, rozwiązując problem dużego obrazu. Z mojego doświadczenia był to „właściwy wybór”. Dobre wprowadzenie do Automount można znaleźć na wiki Ubuntu .
Ogłoszenie N

Odpowiedzi:


18

Ten sam problem wystąpił po przejściu z Oneiric (gdzie automount działał dobrze) na Precise.

Tym, co rozwiązało problem, było dodanie opcji delay_connect . Ponadto już od czasów Oneirycznych korzystałem z opcji „obejście = zmiana nazwy”. Nie jestem pewien, czy jest dziś potrzebny, ale przynajmniej nie wydaje się boleć.

Moja pełna linia / etc / fstab to:

sshfs#user@host:/remote/dir /local/dir fuse delay_connect,idmap=user,uid=1000,gid=1000,umask=0,allow_other,_netdev,workaround=rename 0 0

Konieczne byłoby oczywiście dostosowanie identyfikatorów użytkowników / grup do własnego środowiska.


1
Pracowałem dla mnie bez obejścia = zmień nazwę tam, gdzie wcześniej nie działało. Tak więc moją jedyną zmianą było dodanie opcji delay_connect, co zdecydowanie pomogło tutaj! Dziękuję Ci za to. Zastanawiam się, dlaczego _netdev tutaj nie wystarczy ...
Nicolas

1
To też działa idealnie dla mnie. @Nicolas, uważam, że _netdevproblem został wyjaśniony w odpowiedzi Tony'ego. Sieć może być uruchomiona, ale nadal nie może rozpoznać hosta. Oczywiście użycie adresu IP rozwiązałoby to, ale kto chce adresów IP w swoim fstab?
Auspex

Za to, co jest warte, w jakiś sposób, gdy skopiowałem to wkleiłem do atomu, wybrałem niewidzialne postacie, które go złamały. Musiałem je usunąć
Jonathan

4
Montuje się dobrze, ale potem otrzymuję: ls / backup: Błąd wejścia / wyjścia
Jonathan

Dodanie „delay_connect, workaround = rename” działało dla mnie w Arch Linux. Dzięki!
aSystemOverload

1

Również jako uzupełnienie wszystkich poprzednich komentarzy,

  1. Upewnij się, że zezwalasz użytkownikom innym niż root na określenie allow_otheropcji montowania w/etc/fuse.conf

  2. Upewnij się, że używasz każdego sshfs co najmniej raz ręcznie podczas rootowania, aby podpis hosta został dodany do ~/.ssh/known_hostspliku.

    sshfs [user]@[host]:[remote_path] [local_path] -o allow_other,IdentityFile=[path_to_id_rsa]
    

Opcja allow_other mount ujawnia nierozwiązany błąd bezpieczeństwa w jądrze Linux: jeśli opcja montowania default_permissions NIE jest używana wraz z allow_other, wyniki pierwszej kontroli uprawnień przeprowadzonej przez system plików dla pozycji katalogu zostaną ponownie wykorzystane przy kolejnych dostępach tak długo, jak i-węzeł dostępnego wpisu jest obecny w pamięci podręcznej jądra - nawet jeśli uprawnienia uległy zmianie od tego czasu, a nawet jeśli późniejszy dostęp jest uzyskiwany przez innego użytkownika.
MountainX dla Moniki Cellio

0

Miałem ten sam problem, myślę, że potrzebujesz auto, aby być noauto. nie powinien montować przy starcie, powinien montować, kiedy et jest w górze


6
Myślę, że „montuje się tylko wtedy, gdy jest gotowy do pracy w sieci” _netdev, a zmiana za pomocą noautopowoduje, że nie można go zamontować przy rozruchu (tylko jawnie przy użyciu komendy montowania )
Ad N

0

Jeśli chcesz zamontować go z autorytatywnego serwera DNS /etc/fstab a nazwa hosta zdalnego serwera SFTP jest dostarczana przez ten serwer DNS, z pewnością nie będziesz w stanie się połączyć, ponieważ nazwy hosta nie można jeszcze rozwiązać. Serwer DNS musi być uruchomiony podczas próby zamontowania lub musisz znaleźć alternatywną metodę uzyskania adresu IP serwera zdalnego.

W takim przypadku możesz wybrać jedno z następujących rozwiązań:

  • Dodaj delay_connect opcję, aby umożliwić kontynuowanie sekwencji rozruchowej, a po uruchomieniu sekwencji rozruchowej serwer DNS połączy się.
  • Dodaj nazwę hosta zdalnego serwera SFTP do lokalnego /etc/hosts pliku , podając odpowiedni adres IP.
  • Użyj adresu IP zdalnego serwera SFTP fstabzamiast nazwy hosta.

Czy możesz rozwinąć tę delay_connectopcję? Gdzie to jest dodane? Edytuj swoje pytanie, aby podać więcej informacji na jego temat.
AJefferiss,

Dodajesz go do listy opcji fstab: sshfs # użytkownik @ host: / remote / mnt / local fuse delay_connect, uid = 1000, gid = 100, umask = 0, allow_other 0 0
Tony
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.