Selenith

Projets, Memos, Infos.

[Raspberry - kodi] monter un dossier en sshfs

Maintenant que vous savez comment creer un serveur de fichier en sftp accessible depuis n'importe ou de facon sécurisée, nous allons voir comment le monter à distance sur votre raspberry pi.

Le principe

Vous avez :

- Votre serveur (A) accessible en sftp, contenant vos media (musiques, films, etc).
- Votre raspberry (B) lecteur de media  avec un kodi/xbmc d'installé qui va se connecter sur le serveur A.

(B) au demarrage va automatiquement se connecter sur (A) et monter le dossier de media distant sur un repertoir en local.

 

Configuration

On va editer le fichier qui lance les scripts utilisateur au demarrage de kodi (B). 

nano /etc/rc.local

Ajoutez ensuite dans le fichier et au dessus de la commande exit 0

/bin/sleep 5 #attente du montage de la partition /home au demarrage
/usr/bin/sshfs -o allow_other user_A@domaine.tld:/repertoir/distant /home/pi/sshfs -p 22

user_A : utilisateur local de (A) autorisé a ouvrir une connection sftp.
domaine.tld : l'adresse de (A) sous forme d'ip ou de nom de domaine
/repertoir/distant : le repertoire distant à monter. Si votre config sshd est propre le repertoire sera "/".
/home/pi/sshfs : le repertoire local de (B) dans lequel les media seront montés.

Vous pouvez changer le port (-p 22) par un autre si vous l'avez modifié dans la configuration de (A)

On créé le repertoire de (B) dans lequel sera monté (A)

mkdir /home/pi/sshfs

J'aimerais vous dire que ca suffit, mais il faut tapper un mot de passe au moment du montage du dossier. Hors le but c'est que tout se fasse tout seul. La seule facon de se connecter en ssh sans avoir besoin de tapper un mot de passe est de declarer la machine cliente sur la machine serveur. 

Pour se faire on va generer un couple de clé sur notre petit kodi (B).

sudo ssh-keygen -t rsa

Le sudo est important, il va generer une biclé pour l'utilisateur root. Copiez ensuite le contenu de la clé publique de (B) qui a été générée. Vous le trouverez dans le fichier /root/.ssh/id_rsa.pub.

Connectez vous ensuite à votre serveur de media (A) et collez ce contenu dans le fichier /home/user_A/.ssh/authorized_keys. Si le fichier n'existe pas, creez le.

Vous pouvez tester le bon fonctionnement en tappant la ligne de commande de rc.local avec sudo devant.

sudo /usr/bin/sshfs -o allow_other user_A@domaine.tld:/repertoir/distant /home/pi/sshfs -p 22

Et voila ! Votre serveur de media est accessible de la meme facon qu'un dossier local dans l'interface de kodi/xbmc de (B).

Vous pouvez meme l'emporter et le brancher chez des amis. Tant qu'il est relié au net il se connectera de facon securisée sur votre serveur de fichier en sftp.

 

Demontage (optionel)

Si vous souhaitez demonter le dossier, voici la commande :

fusermount -u /home/pi/sshfs

 

Bugs frequents

Il arrive parfois, selon les versions de ssh, de l'OS ou encore de la hauteur de la marée, que le sshfs ne se monte pas alors que la connection ssh classique se fait bien. Vous pourrez voir dans les logs (auth.log) du client "sshfs read connection reset by peer". Remplacez simplement de nom de domaine du serveur par son IP.

Publié le 10/07/2015 - Commentaires 0

[linux] creer dossier partagé ssh sans chroot

Configuration de base

Pour commencer il va falloir creer un utilisateur sans shell ni home. L'interet est de securiser au maximum en empechant l'utilisateur d'acceder au systeme.

L'utilisateur utilisé ici sera invite.

sudo useradd --no-create-home -s /bin/false invite


Ensuite si ca n'est pas deja fait, installez le daemon ssh.
Il va falloir creer un dossier de partage qui sera le dossier racine a la connexion.

sudo mkdir /srv/partage


Le fonctionnement de ssh est fait de tel sorte qu'aucun utilisateur ne peut avoir les droits sur le dossier racine.
Il va donc falloir creer un sous dossier dans lequel l'utilisateur aura tous les droits.

sudo mkdir /srv/partage/echange


Puis attribuer les droits a s'utilisateur

sudo chown invite:invite /srv/partage/echange


Ensuite, editez le fichier  /etc/ssh/sshd_config

Ajoutez en fin de fichier

 #config pour creer une cage scp sans chroot
Match user invite
        ChrootDirectory /srv/partage
        X11Forwarding no
        AllowTcpForwarding no
        # ForceCommand /usr/lib/openssh/sftp-server
        ForceCommand internal-sftp


Puis rechargez le daemon ssh.

 sudo service ssh reload


Et voila, votre utilisateur aura acces a son dossier echange dans lequel il pourra deposer/supprimer/modifier ses fichiers et ses dossiers.
 


Configuration avancée

 


Vous pouvez egalement lier un groupe d'utilisateur a votre dossier.

On va creer un groupe pour le sftp. Il va s'appeler partagesftp

sudo groupadd partagesftp


on lui ajoute ensuite un ou plusieurs utilisateur.
 

sudo useradd --no-create-home -g partagesftp -s /bin/false toto
sudo passwd toto
sudo useradd --no-create-home -g partagesftp -s /bin/false titi
sudo passwd titi


Avec dans ssh_config
 

#config pour chroot propre scp
Match groupe partagesftp
        ChrootDirectory /srv/partage
        X11Forwarding no
        AllowTcpForwarding no
        # ForceCommand /usr/lib/openssh/sftp-server
        ForceCommand internal-sftp -u 2 # modification du umask par defaut


On n'oublie pas de recharger la config.
 

sudo service ssh reload
Publié le 04/03/2015 - Commentaires 0

[linux] ajouter un utilisateur sans shell ni home

Creer un utilisateur sans home et sans shell c'est facile !

L'utilisateur a ajouté sera toto.

Si l'utilisateur n'est pas encore créé :
 

sudo useradd --no-create-home -s /bin/false toto
sudo passwd toto


Puis entrez le mot de passe pour l'utilisateur.

Et voila votre utilisateur n'aura aucun acces console et n'encombrera pas votre systeme avec un dossier home inutile.
Cette manip est tres pratique si vous voulez creer un dossier de partage ssh ou ftp avec un utilisateur dédié pour cette fonction.


Si l'utilisateur existe deja et que vous souhaitez lui enlever l'acces a la console :
 

sudo chsh -s /bin/false toto


La commande chsh permet de changer le shell de votre utilisateur.

Publié le 04/03/2015 - Commentaires 0