Lumao - Développement Magento
Connexion SFTP avec Docker - Agence E-commerce Magento LUMAO

Connexion SFTP avec Docker

Comment accéder au contenu sur vos containeurs Docker ?

Comme sur les autres, via (s)ftp.

SFTP

Pourquoi faire ça

Dans la logique **DevOps**, on ne va pas utiliser la connexion sftp pour modifier le code directement en prod, non on a le déploiement automatique et ça sera écrasé.

Par contre, les webmasteurs ont surement besoin de modifier ou d’ajouter régulièrement des médias au site. Il ne faut pas les versionner, c’est pour cet usecase qu’on va faire un containeur sftp.

Docker compose

__docker-compose.yml__ ``` version: "2" services: sftp: image: atmoz/sftp volumes: - ./sftp-users.conf:/etc/sftp-users.conf - ./ssh/sshd_config:/etc/ssh/sshd_config - ./ssh/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key - ./ssh/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key - ../example.com/src:/home/example/data ports: - "2233:22" restart: always ``` On utilise l'image **atmoz/sftp**, on va mapper plusieurs fichiers. On expose le port **2233** de l'hôte. C'est sur celui-là qu'on se connectera.

sftp-users.conf

example:example_password:33:33:/data

La liste des utilisateurs sous cette forme :

nom utilisateur:mot de passe utilisateur:id_utilisateur (ici apache):groupe utilisateur:répertoire de montage

Quand l’utilisateur se connectera, il verra le répertoire data en premier.

C’est le montage /home/example/data dans le docker-compose.yml qui exposera les fichiers.

ssh/sshd_config

# Secure defaults
# See: https://stribika.github.io/2015/01/04/secure-secure-shell.html
Protocol 2
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key

Faster connection

See: https://github.com/atmoz/sftp/issues/11

UseDNS no

Limited access

PermitRootLogin no X11Forwarding no AllowTcpForwarding no

Force sftp and chroot jail

Subsystem sftp internal-sftp ForceCommand internal-sftp ChrootDirectory %h

Enable this for more logs

#LogLevel VERBOSE

C’est dans ce fichier qu’on récupère le nom des clés à mapper.

ssh/ssh_host_ed25519_key

SSH Key #1. On la récupère avec cette commande :

docker cp sftp_container:/etc/ssh/ssh_host_ed25519_key ssh/ssh_host_ed25519_key

ssh/ssh_host_rsa_key

SSH Key #2. On la récupère avec cette commande :

docker cp sftp_container:/etc/ssh/ssh_host_rsa_key ssh/ssh_host_rsa_key

FTP

version: "2"
services:
  sftp:
    image: stilliard/pure-ftpd
    volumes:
        - ../example.com/src/:/home/vsftpd/user
    environment:
      - "FTP_USER_NAME=user"
      - "FTP_USER_PASS=password"
      - "FTP_USER_HOME=/home/vsftpd/user"
      - "PASV_ADDRESS=1.2.3.4"
      - "PUBLICHOST=1.2.3.4"
      - "FTP_PASSIVE_PORTS=21100:21110"
      - "PASV_MAX_PORT=21110"
    ports:
        - "20-21:20-21"
        - "21100-21110:21100-21110"
    expose:
     - 20
     - 21
     - 21100
     - 21101
     - 21102
     - 21103
     - 21104
     - 21105
     - 21106
     - 21107
     - 21108
     - 21109
     - 21110
    restart: always