Search code examples
laraveldockerdockerfileopensshlaravel-sail

Start SSH daemon in Laravel sail


I'm using Laravel Sail and have published the Dockerfile (so I can edit it manually). The reason being that I need to use an OpenSSH server on the container itself for a program I'm using.

I am able to install OpenSSH by adding && apt-get install -y openssh-server to the packages section and configure it with the following:

RUN mkdir /var/run/sshd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
EXPOSE 22

The issue though is that it does not start when the container starts.

According to this answer you can add an ENTRYPOINT as follows:

ENTRYPOINT service ssh restart && bash

However you can only have one ENTRYPOINT and Laravel Sail has this by default:

ENTRYPOINT ["start-container"]

I have tried the following:

  • add /usr/sbin/sshd to the start-container script - it didn't start
  • add CMD ["/usr/sbin/sshd", "-D"] into the Dockerfile as per this answer - it gave a permission denied error when starting the container

Solution

  • As the php container uses supervisor you can add another application to the config. Reference for the config can be found here.

    Example

    ssh.ini:
    [program:sshd]
    command=/usr/sbin/sshd -D