Come montare automaticamente usando sshfs?


14

Sto usando il seguente comando per montare una directory Ubuntu SSH sul mio PC Ubuntu.

sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

La mia domanda è: posso creare uno script per questo sul mio desktop dove posso fare un doppio clic ed eseguire questo script ogni volta che ho bisogno di montare l'unità senza digitare sempre manualmente il comando.

Risposte:


15

È possibile creare un programma di avvio e aggiungerlo alla barra di avvio trascinando il .desktopfile lì:

    #!/usr/bin/env xdg-open

    [Desktop Entry]
    Version=1.0
    Type=Application
    Terminal=false
    Icon[en_US]=nautilus
    Name[en_US]=Connect to xy
    Exec=shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx
    #OR: to mount and than open in nautilus (note the '/dir' where ':dir' used to be)
    #Exec=nautilus sftp://user@192.xx.xx.xx.xx/dir/dir
    Comment[en_US]=Connect to xy via ssh
    Name=Connect to xy
    Comment=Connect to xy via ssh
    Icon=nautilus

Suggerimento - ancora meno lavoro:

Se vuoi ancora meno lavoro (= autoconnect) e un'interfaccia utente grafica, potresti voler dare un'occhiata a Gigolo Installa Gigolo . Ha la capacità di montare automaticamente un segnalibro, ogni volta che è presente il filesystem con segnalibro. Potresti voler dare un'occhiata.

sudo apt-get install gigolo   # or use the install link above

Corri gigolo. C'è un'opzione nelle preferenze che la mette in avvio automatico e un'altra per attivare l'icona nella barra delle applicazioni. Controlla entrambi. Quindi aggiungi il tuo segnalibro.

Ecco uno screenshot:

inserisci qui la descrizione dell'immagine

Modo Shell

Un'altra soluzione sarebbe quella di inserire la seguente riga nel tuo crontab (modifica /etc/crontabcon i privilegi di sudo):

@reboot sshfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

Ma poiché il gestore delle password di Ubuntu non è presente quando si esegue il comando, è necessario utilizzare una coppia di chiavi privata / pubblica senza password per autenticarsi con il server ssh in questione (o un metodo di autenticazione simile). Questo lo monterebbe ad ogni riavvio.

Un'altra soluzione sarebbe quella di modificare il tuo /etc/fstab(fornendo la tua versione di Ubuntu fornisce quella opzione).


1
Non posso usare Gigolo. Perché voglio usare un punto di montaggio specifico nella mia cartella home. La tua prima soluzione sembra buona. Ma non sono chiaro sulla denominazione dei file. Hai dato ".desktop-file" Nome o estensione del file. Per favore fatemi un esempio in più sulla denominazione dei file. Quindi posso provarlo.
BlueBird,

È l'estensione. Tutti i lanciatori in Ubuntu terminano con ".desktop". Crea un file vuoto. Copia il testo che ho postato sopra in esso. Sostituisci il testo dietro "Nome =" con quello che preferisci e sostituisci i percorsi reali nel testo dietro "Nome =". Quindi salvarlo come "connect.desktop" o "mountxy.desktop" (ad esempio). Dopo aver salvato il file, trascinalo nel pannello di avvio o dove lo desideri.
con-f-use

Grande!! Ha funzionato.
BlueBird,

8
OMG ... il peggior nome di sempre per un programma.
Lekensteyn,

Apparentemente non c'è più alcuna possibilità di aggiungere gigolo all'avvio automatico, quindi dovrai farlo da solo. Esegui gnome-session-propertiese aggiungi /usr/bin/gigolocomando. Non è possibile selezionare un punto di montaggio, ma è possibile creare un collegamento simbolico alla propria directory home (con ln -s). È possibile trovare il punto di montaggio originale facendo clic con il pulsante destro del mouse su una cartella in File Manager e selezionando Open in Local Terminal.
Seppo Enarvi,

4

Questo thread del forum mostra un metodo per creare un SSHFS automounting che mi sembra esattamente quello che vorresti fare.


Il thread è piuttosto vecchio e per aggiungere un mount dipendente dalla rete ora possiamo usare x-systemde le _netdevopzioni.
Turgon,

3

Puoi semplicemente digitare questo in uno script di shell e puoi creare un launcher per esso sul desktop.

Per esempio mountssh.sh:

#!/bin/bash
shfs user@192.xx.xx.xx.xx:/dir/dir /home/username/mount/xxx

assicurati di chmod +x mountssh.she quindi facendo clic su di esso verrà eseguito

In alternativa, è possibile montare via GVFS, facendo clic destro sul desktop, e la creazione di un lanciatore con il parametro URL: ssh://user@192.xx.xx.xx.xx/dir/dir. Di default si monta su ~/.gvfs/.... Se vuoi restare con il /home/username/mount/xxx, puoi creare un collegamento simbolico da quello gvfs a questo.


Ho creato il file "mount-192.168.1.5.sh" sul mio desktop. Quando faccio doppio clic su di esso, viene aperto con gedit.
BlueBird,

Devi creare questo file sh con privilegi eseguibili ovunque e creare un programma di avvio sul desktop, che punta a questo file .sh.
Iradrian,

2

Potresti anche fare un passo avanti e fare in modo che autofs si occupi del montaggio per te. Poiché autofs non funziona particolarmente bene con l'autenticazione con chiave pubblica SSH (a meno che non si desideri creare una coppia di chiavi senza password per il superutente ), esistono strumenti che consentono di utilizzare le chiavi SSH dell'utente, ssh-agent e keychain:

  • autosshfs : automount SSHFS per utente usando la configurazione SSH dell'utente
  • afuse : un automounter implementato con FUSE

0

Montare una cartella esattamente allo stesso modo, quello che ho fatto è stato creare un launcher personalizzato che punta a un .shfile che contiene il comando. Assicurati solo che il file abbia i permessi di esecuzione e sei pronto per partire.

Faccio semplicemente clic sul pulsante di avvio:

inserisci qui la descrizione dell'immagine


0

Ho provato a usare cron per montare automaticamente la directory ssh, ma provoca un errore dicendo Network is unreachable. È perché l'esecuzione del processo cron è troppo presto per stabilire connessioni IP. Dopo aver inserito sleep prima del sshfscomando, ha installato correttamente la directory ssh.

sleep 5 && sshfs ......

Quindi ho realizzato questo script per soddisfare le mie esigenze.

#! /bin/sh
while true
do 
    ping -c1 -w1 ssh_server_ip > /dev/null && break
done
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 sshname:/mountpath /localmountpath
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.