SSHFS: montare una risorsa remota sfruttando FUSE ed SSH: differenze tra le versioni

verificata per Stretch e Buster, rimosse informazioni relative a versioni obsolete di Debian
m (→‎Introduzione: link glossario)
(verificata per Stretch e Buster, rimosse informazioni relative a versioni obsolete di Debian)
 
(40 versioni intermedie di 8 utenti non mostrate)
Riga 1: Riga 1:
{{stub}}
{{File_System
==Introduzione==
|precedente=Samba:_guida_estesa
Ho deciso di fare questa guida poich� ho avuto molta difficolt� a creare una connessione remota sicura fra una macchina Windows ed una Linux in una LAN (o in una WAN) in quanto la maggior parte delle guide, degli How-To e delle FAQ che ho trovato in Internet esamina tale connessione fra due macchine Linux.
|successivo=Guida_alla_formattazione_dei_dischi_con_fdisk
}}
{{SSH
|precedente=SFTP: SSH File Transfer Protocol
}}
{{Versioni compatibili|Jessie|Stretch|Buster}}
== Introduzione ==
Spesso può essere necessario lavorare direttamente su un filesystem remoto (si pensi, ad esempio, alla webroot di un sito o alla home del proprio portatile).


La connessione remota sicura, che esaminero`, e` una connessione che usa il protocollo [http://it.wikipedia.org/wiki/Ssh SSH (Secure SHell)] e, perci�, � detta '''connessione SSH''' la quale si basa sulla [http://it.wikipedia.org/wiki/Crittografia_asimmetrica criptografia asimetrica] detta anche '''criptografia a coppia di chiavi''' o, piu` semplicemente, '''a chiave pubblica/privata''' (o, semplicemente, '''a chiave pubblica''') che consiste nella generazione di una coppia di chiavi (chiamate [http://it.wikipedia.org/wiki/Chiave_privata chiave privata] e [http://it.wikipedia.org/wiki/Chiave_pubblica chiave pubblica]). In pratica, la '''chiave pubblica''' codifica la communicazione mentre la '''chiave privata''' decodifica tale comunicazione e vengono generate usando degli algoritmi asimetrici che sono [http://it.wikipedia.org/wiki/RSA RSA] e [http://en.wikipedia.org/wiki/Digital_Signature_Algorithm DSA] e le connessioni che usano tali coppie di chiavi prodotte da questi algoritmi asimetrici sono dette '''connessioni SSH'''. Tali algoritmi, per�, servono soltanto per instaurare una connessione criptata fra il client SSH e il server SSH in quanto, per il trasferimento vero e proprio dei dati, si usano degli algoritmi simmetrici, come AES o 3DES, che sono molto pi� efficenti per questo scopo ovvero per cifrare la comunicazione. Quindi:
'''<code>Sshfs</code>''' permette di superare questo problema in un modo semplice e pulito: montando una directory mediante FUSE<sup>[[#Collegamenti esterni|[1]]]</sup>, usando il protocollo [[SSH]].


Una '''connessione SSH''' � una connessione cifrata che utilizza gli algoritmi asimetrici RSA o DSA soltanto per verificare se una chiave pubblica, memorizzata sul Server, derivi da una chiave privata salvata sul Client (in modo da garantire la reciproca autenticita` del Server e del Client) in modo da essere utilizzata, per l'intera sessione, per la cifratura simmetrica con algoritmi come AES o 3DES.
== Installazione ==
Il pacchetto <code>sshfs</code> e le utility per gestire FUSE sono già presenti in Debian, quindi l'installazione si riduce ad un semplice:
<pre>
# apt install sshfs
</pre>
(da eseguirsi con [[privilegi di amministrazione]])


==Scelta del software==
== Configurazione ==
=== Permettere l'esecuzione di sshfs ad altri utenti ===
A partire da Debian 8 ([[Jessie]]) non è necessario modificare niente, in quanto di default tutti gli utenti possono utilizzare il modulo <code>fuse</code> se è installato; né ha più alcuna importanza l'appartenenza al gruppo ''fuse'', in precedenza richiesta.


Ora, dopo aver fatto questa introduzione per chiarire i termini che user� in seguito, spiegher�, in pratica, come si crea una connessione SSH da Windows a Linux. Per far ci�, occorre scegliere un server-software SSH sulla macchina Linux (che funge dal Server) ed un client-software SSH su una macchina Windows (che funge da Client). Ora, per scegliere un server-software SSH per Linux, non esiste alcun problema in quanto la communit� Open Source ha creato un ottimo prodotto che, ormai, tutte le distribuzione lo installano come default. Questo prodotto � il software [http://www.openssh.com/ OpenSSH Server]. Ora, siccome Windows (in tutte le sue edizione per il Desktop) non ha nessun client-software SSH, occorre cercarne uno. Il pi� semplice client SSH con licenza certificata Open Source � [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] ma, chi volesse usare soprattutto la Shell di Linux ed avere qualche comodit� in pi� sullo stile di Windows, dovr� valutare programmi commerciali come [http://www.vandyke.com/products/securecrt/ SecureCRT] o [http://www.ssh.com/products/tectia/client/ SSH Tectia Client] che, per fortuna, si possono prelevare le versioni di valutazione completamente funzionanti prima dell'acquisto.
== Utilizzo e Test ==
L'utilizzo è semplice:
'''sshfs''' [user@]host''':'''[dir] mountpoint [options]
anche se spesso si può semplicemente usare senza opzioni:
<pre>
$ sshfs user@host:/dir/to/mount /mnt/sshdir
</pre>
dove
; <code>user</code>: è l'utente della macchina remota, se omesso verrà utilizzato l'username dell'utente che lancia il comando;
; <code>host</code>: è l'indirizzo IP o l'URL a cui la macchina remota risponde;
; <code>/dir/to/mount</code>: è il percorso assoluto della directory da montare, (è possibile anche utilizzare un percorso relativo a partire dalla directory home dell'utente: <code>''./path/to/dir''</code>; o perfino tralasciare questo argomento, per indicare la home, ma sempre digitando '''<code>:</code>''');
; <code>/mnt/sshdir</code>: rappresenta il punto di mount; questa directory deve appartenere all'utente, che deve avervi accesso anche in scrittura;


{{Box | Nota |I client SSH permettono soltanto di accedere alla Shell di Linux per poter eseguire comandi su un terminale a caratteri di questo sistema operativo. Per poter accedere anche al suo server grafico [http://it.wikipedia.org/wiki/X_Window_System X Window System] o '''X11''' o soltanto '''X''' (e, quindi, per poter controllare i vari ambienti grafici ed i programmi di X), occorre anche un [http://it.wikipedia.org/wiki/VNC client/server VNC]. Ora, niente paura in quanto, grazie alla funzionalit� [http://en.wikipedia.org/wiki/Tunneling_protocol Tunneling] di questi tre client SSH, � possibile controlare anche X sempre in modo sicuro.}}
per controllare la riuscita del comando, si può analizzare l'output del comando:
<pre>
$ findmnt
</pre>


==Configurazione dell'OpenSSH Server==
Per quanto riguarda lo smontaggio (unmounting) il comando è il seguente:
<pre>
$ fusermount -u /mnt/sshdir
</pre>


Una volta installato l'OpenSSH Server sulla macchina Linux, occorre configurarlo per scegliere il modo di authentificazione che volete che le macchine Client usano per accedere a questa macchina Linux.
per le opzioni consultare il file
<pre>
$ man sshfs
</pre>
tra le più comuni:
'''-p''' ''PORT'' equivalente a <code>-o port=PORT</code>
'''-C''' equivalente a <code>-o compression=yes</code>
'''-F''' ''ssh_configfile'' specifica un file di configurazione alternativo
'''-1''' equivalente a <code>-o ssh_protocol=1</code>


Le varie autentificazione che OpenSSH Server pu� offrire sono:
Si noti che per dichiarare opzioni di SSH è sufficiente digitare <code>'''-o''' ''variabile_sshd'''''='''''valore''</code>, ad esempio per specificare la propria chiave privata è sufficiente aggiungere <code>-o IdentityFile=/percorso/chiave</code> (ASSOLUTO!):
<pre>$ sshfs user@host:/dir/to/mount /mnt/sshdir -o IdentityFile=/percorso/chiave -p numero_porta</pre>


#Autentificazione tramite '''password'''
Se il mount avviene con successo è possibile usare il file-manager preferito per poter gestire in lettura e scrittura la nuova directory montata, che sia esso MC, dolphin, PCmanfm o altro.
#Autentificazione '''ChallengeResponseAuthentication''' o '''Keyboard-Interactive'''
#Autentificazione '''a chiave pubblica'''
#Autentifiazione '''GSSAPI'''


'''L'autentificazione tramite password''' utilizza la Username e la Password dell'utente (le stesse usate per l'autentificazione in locale) per verificare se l'utente � autorizzato ad accedere da remoto alla macchina Linux.
=== Utenti e gruppi proprietari ===


'''L'autentificazione ChallengeResponseAuthentication o Keyboard-Interactive''' utilizza una serie di autentificazioni caratterizzate da richieste, fatte dal server SSH, che devono essere confermate dalle risposte mandate dal client SSH. Se le risposte coincidono a quelle memorizzate sul Server, l'utente � autorizzato ad accedere da remoto alla macchina Linux altrimenti questi non pu� entrare in tale macchina Linux.
Per impostazione predefinita sshfs adotta un'associazione "diretta" tra [[UID]]/[[GID]] della macchina remota e quella locale, il che significa per esempio che se il proprietario di un certo file sulla macchina remota è l'utente con UID 1002 anche in locale la proprietà del file sarà attribuita all'utente avente UID 1002. Potrebbero dunque sorgere problemi di permessi se su macchina remota e locale non sussiste un esatta corrispondenza utenti/UID e gruppi/GID. Un modo veloce per superare tale problema è specificare lo UID/GID durante il comando per montare le risorse remote, per esempio


'''L'autentificazione a chiave pubblica''' verifica se la chiavi pubblica, memorizzata sul Server, '''derivi''' dalla chiave privata memorizzata sul Client dell'utente. Se tale verifica ha esito positivo, l'utente pu� accedere alla macchina Linux altrimetri no. Siccome la chiave privata � praticamente un file, che autorizza chiunque entra in possesso ad entrare in un Server SSH, � consigliabile protteggerla con una '''passphrase''' che, in sostanza, � una password che occorre inserirla ogni volta (o quasi) che si effettua una connessione verso tale Server SSH.
<pre># sshfs user@host:/dir/to/mount /mnt/sshdir -o idmap=user,uid=1001</pre>


fa sì che all'utenza usata per connettersi al server remoto sia associata in locale l'utenza avente UID 1001. Se si ha la necessità di fissare la corrispondenza di più utenze/gruppi è possibile creare degli appositi file di mappatura (si veda il manuale di sshfs).


----
==== Accesso ad altri utenti ====


: [[Utente:Balubeto|Balubeto]] 04:46, 29 Mag 2006 (EDT)
Per permettere l'accesso del file system anche ad altri utenti, indipendentemente dai permessi associati ai file, è possibile mediante l'opzione: <code>-o allow_other</code>
 
Affinché abbia effetto però bisogna anche configurare '''fuse''', ossia che <code>/etc/fuse.conf</code> contenga, non commentata, la riga <code>user_allow_other</code>, che di default è disabilitata per ragioni di sicurezza. Per maggiori informazioni si rimanda al manuale (<code>man fuse</code>).
 
È pertanto '''sconsigliato''' utilizzare tale impostazione, se si può fare altrimenti.
 
== FAQ ed Errori Frequenti ==
=== failed to open <code>/dev/fuse</code>: No such file or directory ===
L'errore è dovuto alla mancanza del modulo del kernel relativo a ''fusefs''. È necessario compilarlo come modulo o staticamente. Nei kernel pacchettizzati Debian è presente, ed è caricabile con un:
<pre>
# modprobe fuse
</pre>
 
=== mountpoint is not empty ===
Se si cerca di montare una risorsa in un [[mountpoint]] contenente già dei file, può apparire il seguente errore:
<pre>fusermount: mountpoint is not empty
fusermount: if you are sure this is safe, use the 'nonempty' mount option</pre>
Le soluzioni sono:
* usare un mountpoint libero (consigliata)
* appendere, dopo il comando <code>''sshfs''</code> l'opzione <code>''-o nonempty''</code>
 
=== Collegamenti esterni ===
[1] [http://fuse.sourceforge.net/ FUSE]
{{Autori
|Autore = [[Utente:MaXeR|MaXeR]]
|Verificata_da =
: [[Utente:Wtf|Wtf]] 16:58, 9 ott 2013 (CEST)
: [[Utente:mm-barabba|mm.barabba]]
: [[Utente:HAL 9000|HAL 9000]] 21:01, 18 ago 2019 (CEST)
| Numero_revisori = 3
}}
 
[[Categoria:Filesystem]]
[[Categoria:Condivisione_risorse]]
[[Categoria:Crittografia]]
[[Categoria:SSH server e amministrazione remota]]
3 581

contributi