Web App for ContainersでコンテナにSSHする

こんにちは、サイオステクノロジー武井(Twitter:@noriyukitakei)です。今回はWeb App for Containersで稼働しているコンテナのシェルに入る方法を試してみます。ほぼ私の備忘録です。

最もメジャーな方法は、コンテナの中にSSHデーモンを立てる方法です。

MS公式のドキュメントに書いてありますので、それをベースにやってみます。

https://docs.microsoft.com/ja-jp/azure/app-service/tutorial-custom-container?pivots=container-linux#connect-to-the-container-using-ssh

そして、よく使うであろうDebianを前提とします。こちらもDockerの公式ドキュメントに書いてあります。

https://docs.docker.jp/engine/examples/running_ssh_service.html

ということで以下のDockerfileを作りました。SSHデーモンの構築の部分だけ一部抜粋してます。

RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:Docker!' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#Port 22/Port 2222/' /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

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 2222 8080

MS公式ドキュメントからは読み取れないのですが、Web App for ContainersのコンテナにSSHするためには、以下の要件があります。

  • SSHのポート番号が2222であること
  • ユーザー名とパスワードは、root / Docker!であること

そしてちなみにですが、debianのbusterでsshdをインストールすると、Dockerの公式マニュアルとは異なり、/etc/ssh/sshd_configが#PermitRootLogin prohibit-passwordとなっている(Dockerの公式マニュアルではPermitRootLogin prohibit-password)ので、そのあたり書き換えなければなりません。

このDockerfileをもとにコンテナ作れば、Web App for Containersの管理画面からSSHできます。なにかとSSHできたほうが便利です。

ということで簡単でしたが、現場からは以上です。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です