Blog de dada

DevOps, bidouilleur et routard plein de logiciels libres

SSH

Partage de fichiers dans un réseau Windows

Rédigé par dada / 02 septembre 2016 / 11 commentaires


Réussir à partager des fichiers dans un environnement Windows semble simple, on installe Samba et c'est plié. J'ai pourtant rencontré trop de problèmes avec cette solution, j'ai lâché l'affaire et je me suis creusé le crâne. Ma situation est la suivante :
  • Un serveur destiné à partager des fichiers chez un hébergeur sous Debian
  • Un réseau familial sous Windows
  • Un besoin basique de sécurité
  • Un besoin de fiabilité
  • Une solution éprouvée
Je gère le serveur sous Debian sans problème. Je m'y connecte déjà en SSH et une paire de clés privée/publique avec un point de montage dans mon Nautilus. Y'a rien à ajouter, ça comble les besoins de sécurité.

Le réseau familial, j'ai absolument pas envie de me prendre la tête avec samba et sa configuration affreusement chiante. J'ai choisi un truc de feignant : Apache. Comme ça, pas de prise de tête, tout se fait via le navigateur. Pourquoi Apache ? Parce que je vais ajouter une pièce dans tout ce merdier : une Raspberry Pi première génération.
L’idée qui m'a traversé l'esprit est la suivante : faire un montage SSHFS sur une Raspberry Pi qui sera la seule à pouvoir se connecter au serveur et qui offrira son contenu aux membres du réseau via une IP privée. L’accès aux données distantes se fait via SSH et Apache s'occupe du reste dans l'unique boucle locale. Note importante : seul celui que a un accès au serveur peut partager des données. Tout se fait en sens unique.

Avec un schéma, ça donne ça :



Le dessin est mauvais, mais l’idée est là : un accès en sens unique pour les PC sous Windows via Firefox. Pour que tout ça tourne bien, il ne faut pas grand chose :
  • Une Raspberry Pi avec Raspbian, un utilisateur avec SSH et une IP fixe
  • Un serveur Apache tournant avec les droits group/user dudit utilisateur pour justement éviter les problèmes de droits (envvars).
  • Un point de montage SSHFS automatique dans le fstab si redémarrage intempestif il y a, et ça arrive toujours. Toujours
  • Un Vhost qui pointe vers ce point de montage
  • Un peu de temps
On se trouve donc avec une installation pas si simple que ça, quoique, mais qui aura le mérite de faire ce que je lui demande dans des conditions honorables. Après, en tant que DevOps (*rire*), je jongle avec ce que je sais faire de mieux : des serveurs, du SSH, de l'Apache et Debian.

Si vous avez des idées plus simples et aussi stables, je suis preneur. Je ne promets pas de les appliquer tout de suite, mais ça sera stocké quelque part.

Ah, et pour finir, je vais essayer de trouver un moyen de rendre l'affichage des fichiers partagés un peu moins laid  parce que le listing du contenant d'un répertoire est vraiment limite sous Apache.
Je me suis bien amusé à faire ça. J’espère que ça va vraiment tenir. Au final, je m’inquiète plus pour ma Raspberry Pi qui traîne en équilibre sur une Freebox que du bon fonctionnement de l'installation ;-)
 

Connexion SSH impossible après un changement de clé

Rédigé par dada / 25 août 2015 / 6 commentaires




C'est vraiment le truc stressant par excellence : on doit jouer avec ses clés SSH alors qu'on sait très bien que c'est une mauvaise idée. Pas le choix, faut quand même y aller. On lance ssh-keygen, et on essaye de se connecter : rien, nada, niet.

Quand c'est comme ça, la première réaction, c'est de vite, vite revenir en arrière, histoire de retrouver la configuration d'origine. Hier soir, ça n'a pas marché. Je restais avec une horrible permission denied.

J'ai finalement trouvé la solution, alors je partage. J'en profite pour sortir un rapide tutoriel pour refaire ce genre de manipulation les yeux fermés.

Note : je suis passé par la connexion de secours de mon hébergeur pour réactiver l'authentification par mot de passe. Si vous l'aviez vous aussi désactivée, n'oubliez pas de la remettre en place et de relancer OpenSSH.

Générer une clé valide

Cette partie n'est pas obligatoire si vous être certain que votre clé est bonne.

ssh-keygen -t rsa -b 4096 -C "$(whoami)@$(hostname)-$(date -I)"
Avec cette commande, vous avez une bonne clé, datée qui plus est.

Vérifier les droits des fichiers importants

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
Notez aussi que vous devez être propriétaire de ces mêmes fichiers et répertoire.
chmod -R utilisateur: ~/.ssh

Être certain que le serveur connait cette clé

ssh-copy-id -i ~/.ssh/id_rsa.pub "utilisateur@votreserveur.tld -p port"
Cette commande vous permet avec certitude de synchroniser vos machines. Pas de doute possible en passant par là.

Ajouter votre clé à votre système

C'est là que j'ai trouvé la solution à mon problème : une fois générée, la clé n'est pas forcément connue par votre OS/OpenSSH. Voici la commande magique que je ne connaissais pas :
ssh-add 
C'est tout. Ces sept caractères furent les plus importants de ma soirée.

J'espère que ce petit tutoriel rapide vous aidera. Moi, je sais déjà où je viendrais rechercher des informations la prochaine fois que je me ferai peur.

Astuces du dimanche #4

Rédigé par dada / 10 mai 2015 / 2 commentaires


Quatrième version des astuces du dimanche ! Je dois avouer que j'aime bien cette formule simple et rapide pour partager des astuces peu révolutionnaires mais qu'il fait bon rappeler de temps en temps.

Au programme de cette semaine : partager des fichiers en réseau sans se prendre la tête et comment créer une archive de sauvegarde (pour un backup, par exemple) et vous l'envoyer alors que vous n'avez pas de place sur le disque dur.

Partager ses fichiers via python

Sans clés USB ou système de partage en réseau, il est bien difficile de partager un fichier avec le PC du voisin. La solution suivante permet de se servir de python pour créer un serveur web simple. Il sera accessible depuis votre adresse IP et le port spécifié.

  • Avec python 2.7 ou plus
# python -m SimpleHTTPServer 80
  • Avec python 3 ou plus
# python -m http.server 80
Lancez l'une de ces commandes depuis un terminal ouvert là où se trouve le ficher à transférer, donnez votre IP et le port à votre pote/collègue et le tour est joué. Attention tout de même à ne pas lancer cette commande depuis votre /home/ sous peine de partager l’intégralité de votre vie privée ;-)

Création et envoie d'archive par le réseau

C'est un truc que je rencontre souvent au boulot : faut faire un gros tar.gz de sauvegarde et le placer bien au chaud sur une autre machine mais pas moyen d'y arriver avec l'espace disque disponible.
Pas de panique, la commande tar associée à ssh, à un pipe et cat permette de faire des miracles.

ssh -n ServeurDistant -p PORT 'tar zcvf - toto.txt' | cat - > toto.tar.gz

Avec ça, depuis votre terminal, vous récupérez le contenu de toto.txt, que vous archivez simplement sur votre disque dur local. Celui du serveur distant n'est plus utilisé : terminé le problème de place !

Bon dimanche ! :)