Per le reti solo Linux, trovo che SSHFS sia nativo, stabile ed estremamente veloce. Ho due macchine Xubuntu (18.04) che condividono / cartelle home su SSH.
Ecco come impostare sshfs e riconnettersi automaticamente dopo il riavvio utilizzando fstab senza dover fornire una password. Un grande ringraziamento all'utente kubanczyk di serverfault per come riconnettersi dopo una sospensione / ripresa in remoto.
Userò "Macchina locale - surfbox" per il computer da cui ti connetti e "Macchina remota - devbox" per il computer a cui ti stai connettendo.
Sostituisci "remoteuser" di seguito con il nome utente con cui accedi sul computer remoto e "localuser" con il nome utente con cui accedi sul computer locale. Per verificare i nomi utente digitare echo $USER
terminale su macchine remote e locali.
Inoltre, controlla l'ID utente o l'ID gruppo, entrambi dovrebbero essere 1000.
GroupID: id -g localuser
UserID:id -u localuser
1. Ottieni gli indirizzi IP dei tuoi computer locali e remoti.
hostname -I
Userò 192.168.1.150 per Local Machine ('surfbox') e 192.168.1.151 per Remote Machine ('devbox')
2. Installare i pacchetti su macchine locali e remote
sudo apt install sshfs fuse ssh
3. Creare un fusibile di gruppo e aggiungere l'utente locale ad esso
Creare un gruppo: sudo groupadd fuse
Aggiungi localuser al gruppo: sudo usermod -a -G fuse $user
4. Abilitare "allow_other" nella configurazione dei fusibili
Avremo bisogno di questa opzione durante il montaggio in fstab
Modifica /etc/fuse.conf
con l'editor della riga di comando. Rimuovi l'hashtag prima user_allow_other
e salva.
5. Generare chiavi SSH sul computer locale
Non fornire una password quando richiesto . Premi Invio per lasciare vuoto.
ssh-keygen -t rsa -C youremail@example.com
Le chiavi sono memorizzate nella cartella home directory /.ssh della macchina locale
6. Trasferire la chiave SSH pubblica del computer locale sul computer remoto
ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@192.168.1.151
Ti verrà richiesta la password per Utente remoto su Macchina remota. La chiave pubblica del computer locale viene ora aggiunta al file ~ / .ssh / authorized_keys sul computer remoto.
7. Creare una directory sulla cartella Macchina locale / mnt in cui verrà montata la cartella Macchina / home remota.
Scegli un nome che abbia senso per la tua macchina remota.
sudo mkdir /mnt/devboxhome
8. Montare la macchina / home directory remota dal terminale
La sintassi per sshfs è
sshfs [user@]host:[directory] mountpoint [options]
noi usiamo
sudo sshfs [remoteuser]@192.168.1.151:/home/[remoteuser] /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/[localuser]/.ssh/id_rsa
esempio: supponendo che "steve" sia il nome utente su macchine sia locali che remote
sudo sshfs steve@192.168.1.151:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa
Poiché la chiave RSA pubblica è stata trasferita sul computer remoto, non è necessario richiedere la password dell'utente remoto.
Riceverai un avviso che la macchina non è attendibile e ti verrà chiesto se deve essere aggiunto. Aggiungi la macchina remota come attendibile.
9. Verifica: sfogliare la macchina / home directory remota
Nel terminale sul computer locale è ora possibile elencare la directory macchina / home remota in / mnt / devboxhome
cd /mnt/devboxhome
ls
o usa Nautilus per sfogliare la directory. Grande.
10. Abilitare la riconnessione dopo il riavvio
Aggiungeremo una voce in / etc / fstab per farlo accadere. Avrai bisogno del tuo userid della macchina locale o del groupid - vedi intro se hai perso questo. Modifica / etc / fstab con l'editor della riga di comando e aggiungi queste due righe alla fine di / etc / fstab
# Mount devbox at boot
remoteuser@192.168.1.151:/home/[remoteuser]/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/[localuser]/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0
- delay_connect fa attendere il kernel fino a quando la rete è attiva fino a quando non tenta di montare la directory sul computer remoto.
- Dal momento che stiamo eseguendo come root durante l'avvio, dobbiamo specificare il file di chiavi che è memorizzato nella directory home di localuser.
- allow_other - gli utenti diversi da quello che esegue il montaggio effettivo possono accedere al filesystem montato.
- idmap = user : traduce solo l'UID dell'utente che si connette
- riconnetti, ServersLiveInterval, ServerAliveCountMax - ssh invia ping keep-alive. Se i
ServerAliveCountMax
ping consecutivi falliscono, riconnettersi.
Un utente che accede come steve su macchine locali e remote avrebbe:
steve@192.168.1.151:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0
IMPORTANTE : una barra dopo la directory remota: steve@192.168.1.151: / home / steve /
salva / etc / fstab e ....
11. Riavvia
Ora dovresti essere in grado di accedere al computer remoto / home directory nella macchina locale / mnt / devboxhome In Nautilus puoi trascinare questa cartella nella barra dei luoghi
12. Ripeti
Ripetere gli stessi passaggi sul computer remoto per condividere la directory / home del computer locale.