sineverba:
私は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"]
ドッキングウィンドウ・コンポーズファイルを経由して
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
私はSSHキーに関する行のコメントを解除した場合、私は彼らと一緒に(パスワードなしで、当然の)ルートとしてSSH経由でコンテナにログインすることができます。
しかし、私は(ドッカサイトの公式ガイドに基づいて)他の方法を試してみましたので、私は、パスワードを使用しますが、私はに接続しようとするとssh root@localhost -p 2222
、それにはDockerfileに書いたものではないことをパスワードの入力を要求します。
どのように私はそのDockerfileのrootパスワードを変更できますか?
アダム・バレイロ:
ではdocker exec -it <container ID> bash
、あなたは何かが間違っているだけの場合には、コンテナの中身を探索することができます。これまでのところ、私は次のように見ることができます。
root@d52693a8ea0c:/etc/ssh# grep "PermitRoot" sshd_config
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".
のPermitRootLoginフラグはとコメントしているようです#
。私は、あなたが持っていることをDockerfileのsedコマンドでそのファイルにもハッシュタグを削除しました:
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
そして、再構築し、実行した後、私はDockerfileでパスワードでログインできます。
お役に立てれば!