Tengo un Dockerfile
FROM php:7.4-cli
RUN apt-get update && apt-get install -y openssh-server
# add default public key to authorized_keys
#COPY ./ssh/insecure_id_rsa.pub /root/insecure_id_rsa.pub
#RUN mkdir -p /root/.ssh \
# && cat /root/insecure_id_rsa.pub >> /root/.ssh/authorized_keys \
# && rm -rf /root/insecure_id_rsa.pub \
#;
RUN mkdir /var/run/sshd
RUN echo 'root:passforroot' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
# @see https://docs.docker.com/engine/examples/running_ssh_service/
CMD ["/usr/sbin/sshd", "-D"]
A través de una ventana acoplable de composición del archivo
version: "3.7"
services:
deploy:
build:
context: ./docker-compose/deploy
container_name: backend-laravel-deploy
restart: unless-stopped
working_dir: /var/www/
ports:
- "2222:22"
# reserve a tty - otherwise the container shuts down immediately
# corresponds to the "-i" flag
tty: true
volumes:
- ./:/var/www
networks:
- backend-laravel
$ docker-compose build deploy
$ docker-compose up -d deploy
Si descomentar las líneas con respecto a las claves ssh, puedo iniciar sesión en el recipiente a través de SSH como root (sin contraseña, por supuesto) con ellos.
Sin embargo, me gustaría utilizar una contraseña, así que probé el otro método (basado en la guía oficial en el sitio ventana acoplable) pero cuando intento conectar a ssh root@localhost -p 2222
que requiere la contraseña que no se que escribió en Dockerfile.
¿Cómo puedo cambiar la contraseña de root para que Dockerfile?
Con docker exec -it <container ID> bash
se puede explorar el contenido del recipiente, por si acaso algo está mal. Hasta el momento, pude ver lo siguiente:
root@d52693a8ea0c:/etc/ssh# grep "PermitRoot" sshd_config
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
Parece la bandera PermitRootLogin se comenta con #
. He quitado también el hashtag en ese archivo a través de comandos de la Dockerfile sed que tiene:
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
Y después de la reconstrucción y en funcionamiento que pudiera iniciar sesión con la contraseña en el Dockerfile.
¡Espero que esto ayude!