Monter un répertoire distant avec SSH
Cet article a été publié par Benjamin
le 14-04-09 à 20:12 dans la catégorie Serveur
Tags :
- CLI
- Libre
- Serveur
- Tutoriel
- Ubuntu
Comme je l'ai indiqué dans un précédent article, je vais bientôt mettre en place un serveur@home, c'est à dire un serveur allumé en permanence chez moi, utilisable pour plusieurs raisons, notamment l'hébergement de Génération Linux, la création d'un serveur mail perso, la gestion d'un agenda, etc.
Je découvre tous les jours les nouvelles possibilités que je pourrais mettre en place et justement, aujourd'hui, j'ai découvert cette possibilité assez pratique : monter, sur n'importe quelle machine distante, via SSH, un ou plusieurs reprtoires de mon serveur.
Explications :
I. Présentation
"Bon, ma clé USB c'est bien pour transporter mes données mais cela devient vite embêtant de toujours devoir tout re-transférer chez moi en rentrant du boulot, en plus, je risque de perdre cette clé à tout moment et je ne fais pas assez souvent mes sauvegardes". Voici la réflexion que je me suis faite cet après-midi. Avec mon serveur@home qui sera bientôt en place, je me suis dit que je devrai trouver une solution à mettre en place pour mettre un répertoire de mon serveur à ma disposition sur n'importe quelle machine distante (au travail, chez des amis, ...).
Pour cela, je voulais absolument utiliser SSH, pour des raisons évidentes de sécurité. Je sais, les puristes me diront "et scp tu connais ?". Oui je connais très bien scp et l'utilise quasi-quotidiennement mais cette fois je cherchais une solution graphique (shame on me). En gros, je me demandais s'il était possible de monter un répertoire "partagé" genre Samba mais en utilisant SSH.
J'ai donc trouvé mon bonheur et ai décidé de vous faire partager ma découverte (que certains d'entre vous connaissent déjà certainement).
II. Installation
Voici ce qu'il vous faut pour mettre en œuvre cette solution :
- Sur le serveur : Un démon SSH (nécessite l'installation d'OpenSSH, voir ici pour la procédure d'installation)
- Sur le client (la machine distante sur laquelle vous souhaitez monter le répertoire) : Un client SSH ainsi que le logiciel sshfs (à installer grâce à la commande suivante :
apt-get install ssh sshfs
)
III. Mise en place
Il n'y a rien à faire du côté du serveur, il faut juste s'assurer qu'il est accessible depuis l'extérieur et que le service SSH est bien actif. Pour le tester, vous pouvez essayer la commande suivante : ssh login@machine
. Par exemple : ssh benjamin@85.53.123.234
(voir cet article pour plus de précisions).
Voici ce qu'il va falloir faire du côté du client :
Il faut créer un répertoire qui viendra accueillir le répertoire de notre serveur (comme tout point de montage). Par exemple, je vais créer un répertoire "serveur" sur mon bureau grâce à cette commande suivante : mkdir ~/Desktop/serveur
Puis nous allons monter notre répertoire distant dans ce nouveau répertoire grâce à cette commande :sshfs login@machine:/repertoire/a/monter /point/de/montage
par exemple : sshfs benjamin@85.53.123.234:/home/benjamin ~/Desktop/serveur
Dans mon exemple, je vais donc monter sur ma machine, dans le répertoire ~/Desktop/serveur, le répertoire /home/benjamin de mon serveur. Simple n'est-ce pas ?
Notez que les modifications que vous allez faire dans ce répertoire seront faites avec le compte de l'utilisateur que vous avez spécifié dans votre ligne de commande. Pour reprendre mon exemple, si je suis sur un ordinateur du travail avec le compte admin_sys et que je fais des modifications dans mon dossier ~/Desktop/serveur (donc /home/admin_sys/Desktop/serveur) monté ci-dessus, ces modifications seront faites avec le compte benjamin et non pas admin_sys. J'espère avoir été assez clair.
Une fois que vous avez fini d'utiliser votre répertoire, vous pouvez le démonter grâce à cette commande : fusermount -u /point/de/montage
man sshfs
P.S. Si vous avez des applications à me faire découvrir pour un serveur@home, n'hésitez surtout pas :)
Commentaires
Et pour installer un serveur@home, rien ne vaut une Debian qui tourne sur un NSLU2 avec un disque en RAID 1 : tout petit, ne consomme presque rien (une trentaine de watts ...) et ne fait pas de bruit ... Après, il est possible de partager via samba un répertoire sur le réseau local et le même répertoire via ssh depuis Internet ... Que demander de plus ? :-)
Concernant les applications sympathiques, on peut faire tourner Lighttpd+PHP pour disposer également d'un serveur WEB sur la même machine !
N'oublie pas 'fail2ban' pour ton serveur ssh. Ainsi que les options 'PermitRootLogin' et 'AllowUsers' correctement positionnées dans ton 'sshd_config'. Les serveurs ssh sont souvent les cibles de beaucoup d'attaques.
Salut,
Je viens de lire ton post et ya eu un tilt dans ma petite tête :
Agenda !!
Ca fait un moment que je cherche une solution d'agenda assez pratique et complete. J'ai eu installé calendar, mais bon j'arrive pas à m'y faire. En fait je cherche un PIM en ligne complet. J'ai aussi eu essayé (désespérément) de faire fonctionner chandler. Et dernièrement je m'essaie à horde, mais là, c'est vraiment l'usine à gaz.
Alors si tu (ou qqun d'autre) as une bonne proposition à faire.
Si en plus ça pouvait synchroniser des trucs outlook (a cause que à mon boulot ya rien d'autre) ou bien même avec un mobile ce serait super.
Next step sinon server funanbol, mais je le sens pas non plus. Quelqu'un a un retour d'experience là dessus ?
Sinon, pour les softs à installer sur ton server@home, ben le LAMP classique, postfix/clamv, un webmail (j'utilise roudcube, mais squirel mail est tres bien aussi), bind pour gérer tes zones tranquille, wordpress, pixelpost....
Et comme dit precedement, le tout sous debian.
Ah oui des fois que ce serait pas le cas, il vaut mieux utiliser une machine séparée pour faire le firewall avec netfilter. Et surtout pas mettre ta machinbox en router. Et puis désactiver le wifi aussi de la machinbox, récupérer un router wifi et le mettre sur ton reseau interne avec toutes les sécu qui vont bien.
Et comme dit dans le commentaire suivant, pour le ssh, je dirais même tu le mets dans jail, comme ça plus de problème. Par contre, je jurerais pas que ce soit ultra secure de faire un montage en sshfs sur ta patte externe, à voir avec les experts secu pour valider ça.
Et heuuu... have fun.
moi je vais bouder un coup ...
parce que oui je connaissais sauf que j'ai pas réussi à m'en servir
et ce que tu dis la me donne pas beacoups plus d'info ...
enfin bref ... pas grave ... ducoups je joue avec scp et ça marche aussi bien en fait ...
à titre d'info quand meme : "il n'y à pas suffisamment d'espace libre dans le répertoir source distant"
c'est en gros ce que ça me disait au moment de copier des données (évidemment c'etais absurde j'avais largement la place pour ce que je voulais mais le point de montage me donnait un dossier plein ... ah par contre la création de fichier posait pas de souci elle ...
"shame on me" pourquoi shame on you ? o_O
(faut être fou pour sortir des trucs comme ca en 2009, même pour rigoler =P)
Je rajouterais 2 trucs, pour les utilisateurs de Gnome, pas besoin de sshfs, si on veux juste faire de la copie de fichier.
Et sur windows, Filezilla ou d'autres clients FTP permettent de se connecter en SFTP, donc c'est recommandable de mettre un Filezilla portable sur sa clé USB, au cas ou on croiserais le chemin d'une machine Windows (ca peux arriver)
Je ne suis pas sûr de comprendre... j'ai un pc sur lequel j'ai un démon ssh qui tourne et quand je veux copier des fichiers dessus de manière graphique, j'ai juste à taper ssh://username@hostname dans la zone de saisie "Emplacement" de nautilus et il fait les copies par sftp de manière transparente (cf. "Navigation via sftp" dans http://doc.ubuntu-fr.org/ssh)
Quels sont les avantages de ta solution par rapport à ça?
@domak : l'avantage de sshfs c'est d'avoir le dossier distant sur le système de fichier. Quand on monte un volume SSH (ou FTP, WebDAV, ...) dans Gnome, ce partage n'est utilisable que par les applications Gnome. Avec sshfs on peut utiliser le dossier distant avec les applications consoles, et autres programmes non Gnome.
Salut Benjamin, je vois que mon idée de serveur sftp t'as inspiré :)
La question que je me pose est : est-ce qu'un tel serveur est fait uniquement pour que tu puisses te connecter toi-même sur ton pc depuis l'extérieur ou as-tu prévu d'en faire profiter des gens de ton entourage ?
Si c'est juste pour toi, pas de souci, tout est bon. Si c'est également pour ton entourage, je te conseille fortement de chrooter les users concernés et de leur donner le shell sftp pour qu'il n'est pas accès à la ligne de commande.
Au cas où, je te refile mon tuto : http://haltux.homelinux.org/index.php?post/2009/04/02/Configurer-un-serveur-SFTP-(FTP-sur-SSH)
Je te conseille de désactiver l'authentification pas user/mdp et d'activer uniquement l'authentification par clé publique/clé privée. Si ton serveur est exposé sur le net, tu vas subir de nombreuses tentatives d'accès.
Aussi, regarde du côté d'avahi pour activer un service ssh : La disponibilité de ton serveur est découverte automatiquement sur ton client. Plus de ligne de commande ni d'entrée Nautilis. un petit clic sur le client, une authentification automatique grâce à ta clé et ça fonctionne comme si tu étais sur un répertoire en local. Tu peux aussi utiliser la même technique pour activer le remote terminal.
@Jean : un NSLU2 à lui seul ne consomme peut-être pas beaucoup mais il faut obligatoirement le couper avec une autre machine, et là ça devient plus gourmand !
@Dan : En effet, je fais surement faire un article sur fail2ban d'ailleurs. Je n'oublie pas le PermitRootLogin à no, par contre je n'ai pas encore touché au AllowUsers. De plus, je change toujours le port par défaut(22) de mes serveur SSH. Cela évite beaucoup d'attaques !
@lolovroom : J'ai déjà trouvé quelques applications pour l'agenda comme Opengoo ou Tonido, tu peux aller jeter un œil et me dire ce que tu en penses :)
@Qid : En effet c'est étrange, as-tu les droits d'écriture sur ton dossier ? (oui question bête)
@strider : Oui c'est vrai qu'il faut être fou, cependant je me rend compte que j'utilise beaucoup plus la ligne de commande que l'interface graphique^^
@domak : Je n'utilises pas Nautilus mais Thunar (Crunchbang), je ne pouvais donc pas utiliser cette solution
@Thom1 : Merci pour ton tuto, je ne l'avais jamais vu. Mais oui le SSH sera uniquement pour moi, je n'ai donc pas besoin de chrooter les autres utilisateurs :)
@Poupoul2 : Je ne connaissais pas Avahi, je vais regarder cela de plus près. J'ai effectivement pensé à l'authentification pas clés, cependant je me suis dit qu'en mettant un service de fail2ban et en changeant le port par défaut, cela sera une sécurisation convenable. Mais je vais regarder Avahi car cela m'intéresse quand même :)
Sshfs ca dépanne bien mais je n'ai pas trouvé celà super "réactif" (faudra que je me renseigne la dessus).
M'enfin ca dépanne bien.
Sinon comme déjà évoqués par les autres mettre un fail2ban ou changer de port (même sur un pseudo site redirigé par dyndns j'avais déjà un bon paquet de tentative de login !
Xsshfs incorpore ceci dans une interface et c'est très bien fait
http://xsshfs.zici.fr/
Un bon petit logiciel sympa.
Bonjour, superbe idée de mettre un serveur et de se connecter en SSH.
Par ma part j'utilse une Synology. Il s'agit d'un serveur NAS.j'ai installé dessus un openssh et me connecte depuis l'exterieur. Par contre j'ai quelques soucis pour mettre en place l'authentification apr clé mais cela vient d emoi qui débute tranquillement sur les systemes Linux.
Petite question: De chez moi je monte mes partages à la main mais n'y a t-il pas moyen de les monter automatiquement? style netuse sous windows. J'ai essayé de créer un script au démarrage de ma distrib Ubuntu mais rien n'y fait.
Bref regarde du coté de Synology ils ont de bons produits et performants.
+1 pour xsshfs! => http://xsshfs.zici.fr
@strider:
non, avec Gnome, tous les montages sont en fait des montages fuse dans ~/.gvfs, de façon à rendre l'accés à ces montages possible pour tous les processus du système.
Salut!
tu peut aussi metre en place un environement chroot pour securise encore mieux!
bon travaille.
Pour info si côté client vous êtes sous Windows il existe une librairie jouant le rôle de sshfs :
http://dokan-dev.net/en/docs/dokan-sshfs-readme/
Salut, et merci pour cette astuce très pratique. C'est vrai que Nautilus permet de faire la même chose, mais... c'est en mode graphique. J'ai une question qui pourrait peut-être intéresser d'autres personnes ici : est-ce qu'il y a moyen d'écrire ce montage de répertoire distant dans /etc/fstab ou est-ce qu'il y a une astuce permettant d'avoir un répertoire distant monté dès le démarrage de la machine ?
@Alexis : dans /etc/rc.local tout simplement avec un "su <utilisateur> 'sshfs <options>...'
Concernant avahi, un peu plus d'info ici : http://forum.ubuntu-fr.org/viewtopic.php?id=206906 par exemple. Cette astuce permet d'avoir 1 service de navigation Ssh via Nautilus offert par la discovery-applet. Couplé avec une paire de clés, il n'y a même plus de saisie de mots de passe, c'est dispo en permanence dans un tableau de bord Gnome
fort bien ce mini TUTO +1 pour benjamin
j'ai juste une petite question, par exemple si on place un fichier de 1Go dans le repertoire monté sur le client, est ce que les temps de transferts sont longs... ? on retrouve notre fichier de 1Go au bout de combien de temps sur le serveur ?
merci :)
Je n'ai pas testé la vitesse de transfert, tout dépend des connexions...
Il est évident qu'un tel montage sur votre réseau local sera plus rapide que par Internet :)
bonjour benjamin, merci beaucoup pour ton tutorial, cependant je me trouve confronté au même problème que quid à savoir lorsque je monte le dossier avec sshfs et que je veux copier un fichier dedans j' obtiens le message suivant :
"La destination n'a plus assez d'espace libre. Essayez de supprimer des fichiers pour libérer de l'espace."
sais tu d' où cela peut provenir ?
merci d' avance.
je suis probablement un peu bête lol. j' ai trouvé d' où venait mon problème. Etant donné que l' on monte un répertoire via sshfs la citation qui importe le plus c' est : "sshfs est un outil permettant d'utiliser le protocole ssh comme un système de fichier et ainsi monter un répertoire distant à travers le protocole ssh"
Conclusion afin d' utiliser le nouveau point de montage crée, on doit utiliser les commandes propres à ce protocole ==> copier un fichier avec scp par exemple.
j' espère que ce commentaire servira à ceux qui aurait eu un problème similaire au mien
oui certe en passant par le local ca sera plus rapide, mais dans votre cas vous utilisez l'Internet il me semble ? quand vous transférez des fichiers quel est le temps que vous mettez ? à peu près... parce que j'ai fait quelques tests et je me retrouve avec grand minimum 10Mo en 6à7min. voila donc bon pas très convainquant je trouve... :s
merci :)
L'ideal serait de monter la partition automatiquement au démarrage via la fstab !!!
merci. J'ai réussi à monter le répertoire distant :)