Sécure et facile.
Je continue sur ma lancĂ©e de proposition de containers docker pour se doter de service rapidement. AprĂšs un papier sur jellyfin, et sur la construction d’une base de centralisĂ©e pour vos platines kodi, je vous explique aujourd’hui comment je compte partager le rĂ©pertoire d’un serveur distant sur mon rĂ©seau local. Et si j’ai optĂ© une nouvelle fois pour docker c’est parce que c’est une solution simple Ă mettre en place qui ne donne pas un vrai accĂšs SSH tout en Ă©vitant de chrooter un utilisateur. Bref du bon boulot.
L’installation est triviale: elle repose sur un fichier docker-compose, la gĂ©nĂ©ration des clĂ©s ssh nĂ©cessaires, le lancement du container, et le montage local du rĂ©pertoire distant.
Configuration du docker-compose
J’utilise pour se faire l’excellente image docker netresearch/sftp, complĂšte et efficace.
Créez un dossier sftp
et collez-y un fichier docker-compose.yaml
:
|
|
|
|
|
|
Commentaires
repertoire-local-a-partager
: correspond au rĂ©pertoire prĂ©sent sur le serveur distant qu’on souhaite monter dans le container, afin de le rendre ensuite accessible en sftp Ă un serveur local../etc/ssh_ed25519_key
,./etc/ssh_rsa4096_key
et./home/ssh_ed25519_key.pub
: sont les deux clĂ©s ssh privĂ©s et la clĂ© publique requises pour Ă©tablir une connexion sftp sans mot de passe sereinement. Les clĂ©s privĂ©es vont ĂȘtre montĂ©es dans/etc/ssh
du container afin que la clĂ© de signature soit persistante et n’engendre pas d’alerte dans votre serveur local lorsque vous devrez relancer le service (je propose une clĂ© ed25519 et une rsa4096 afin d’assurer une compatibilitĂ© avec d’ancien client). La clĂ© publique va quant Ă elle ĂȘtre montĂ©e dans/home/foo/.ssh/keys
et permette d’accomplir l’authentification entre le container (qui fait office de serveur ssh rĂ©duit au minimum dans notre cas) et le client (voir ici, ou lĂ pour plus de dĂ©tail).foo::1000
: ici j’ai choisi de gĂ©nĂ©rer l’utilisateur foo avec UID 1000. Deux choses sont Ă noter: l’UID n’est pas une sĂ©rie de chiffre Ă nĂ©gliger si on souhaite s’Ă©viter les soucis de permission d’Ă©criture des futurs diffĂ©rents utilisateurs sur les rĂ©pertoires Ă partager, pour le connaĂźtre taperid mon-utilisateur
. Je n’ai pas renseignĂ© de mot de passe, ne souhaitant permettre de connexion que par clĂ©. Si je changeais d’avis Ă l’avenir il me suffira d’Ă©crirefoo:pass:1000
.
Génération des clés SSH
Il faudra trois paires de clĂ© au total. Deux paires dont on n’utilisera que la version privĂ©e et que vous pourrez laisser dans ./etc/
, elles servent au serveur local Ă vĂ©rifier l’identitĂ© du serveur disant. La troisiĂšme paire publique/privĂ©e sera placĂ©e dans le ~/.ssh
de son serveur local, quand seule la version publique sera quant à elle montée dans le container.
Créez le dossier etc
et créez ici votre clé rsa4096, puis la clé ed25519. Puis revenez en arriÚre et créez le dossier home
pour y mettre l’autre clĂ© ed25519.
De type RSA 4096
|
|
De type ED25519
|
|
Montez le répertoire distant
Commencez par lancer le service en vous plaçant dans le répertoire sftp et en tapant la commande docker-compose up -d
. Si vous ne voyez pas d’erreur vous pouvez passer Ă la suite:
- C’est Ă dire copiez
./home/ssh_ed25519_key
et./home/ssh_ed25519_key.pub
dans~/.ssh/
de votre serveur local, - Puis de créez le dossier de montage
/sshfs/repertoire-local-a-partage
sur votre serveur local, - Et d’enfin ajouteez une ligne dans
/etc/fstab
toujours localement.
|
|
|
|
|
|
|
|
USERNAME
par votre utilisateur local, et l'IP-DISTANTE
par l’ip de votre serveur distant.DĂ©bugage
Si le rĂ©pertoire ne se monte pas, vĂ©rifiez d’abord que vous disposez bien des dĂ©pendances fuse
et sshfs
(voir un précédent papier sur ce sujet ici).
Surtout pour investiguer un peu et vous éviter toute migraine excessive, vous pouvez utiliser cette commande:
|
|
Happy SSHFS les amis !
Pour aller plus loin
đ https://doc.ubuntu-fr.org/sshfs
đ https://wiki.archlinux.org/index.php/SSHFS