Dockeriser votre application SSH!
Il y a quelque temps j’ai créé une interface console avec Perl, et je voulais pouvoir la partager simplement. Une idée me vint à l’esprit: peut-on faire “louer” une application en passant par le protocole SSH ? La réponse est OUI ! Avec docker !
Le Dockerfile & docker-compose
Dockerfile;
# Fix a tagFROM ubuntu:latest
# MAINTAINER ...
RUN apt-get update
RUN apt-get install -y openssh-serverRUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd # Changez votre mot de passe ici
RUN sed -ri 's/^#?PermitRootLogin\s+.\*/PermitRootLogin yes/' /etc/ssh/sshd_configRUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN mkdir /root/.ssh
RUN apt-get clean && \ rm -rf /var/lib/apt/lists/_ /tmp/_ /var/tmp/\*
EXPOSE 22
# Installez votre application ici...# ENV DEBIAN_FRONTEND=noninteractive# RUN apt install -y [packages..]# COPY mon_application /mon_application
CMD ["/usr/sbin/sshd", "-D"]
docker-compose.yml;
version: "3.3"
services: mon_application: container_name: mon_application image: mon_application read_only: true hostname: mon_application build: context: . dockerfile: Dockerfile ports: - "2208:22" restart: always
Note: pour une question de sécurité, j’ai passé ici la
clé read_only
à true
pour éviter que
l’utilisateur ne modifie le container. Attention, ceci n’est pas une
fin de sécurité en soit, et ne donnez pas accès à n’importe quoi à
l’utilisateur !
Note 2: j’ai également modifié le port d’entrée :
étant donné que le port 22
est le port SSH utilisé par défaut,
nous ne pouvons pas le choisir. C’est pourquoi ici j’ai choisi le port
2208
, mais un autre port peut faire l’affaire !
Sécurité
Si le compte SSH peut-être accessible depuis internet, alors il est vivement recommandé de changer de mot de passe:
docker exec -ti container_ssh passwd
Une autre solution serait d’utiliser uniquement les clés SSH.
docker exec container_ssh passwd -d rootdocker cp fichier_avec_les_cles_publiques container_ssh:/root/.ssh/authorized_keysdocker exec container_ssh chown root:root /root/.ssh/authorized_keys
Vous pouvez exécuter ces commandes via docker exec
comme montré, ou alors vous pouvez modifier le fichier Dockerfile
si ces modifications sont permanentes.
Mode interaction avec Debian / Ubuntu
Il peut arriver que votre application pose des questions supplémentaires lorsque vous faites un apt install -y [package]
; pour les éviter, entrez avant la ligne suivante dans le Dockerfile
:
ENV DEBIAN_FRONTEND=noninteractive
Grâce à cette ligne, Debian ne vous demandera plus rien.
Sources
Simplifiez les conditions avec les opérateurs logiques et opérateurs ternaires
Découvrez une nouvelle manière de simplifier votre code
Écrivez plus vite en HTML avec Emmet
Ne vous embêtez plus avec les balises !
Introduction à Vim
Devenez un super développeur grâce à Vim !
Introduction aux jobs linux
Gagnez en rapidité avec les jobs