Help us understand the problem. What is going on with this article?

Docker で SSH 接続可能なコンテナ (CentOS) を作成する

More than 5 years have passed since last update.

Docker で SSH 接続可能なコンテナを作成する方法のメモ。コンテナの OS は CentOS です。

packer を使った方法は すでに先に書かれて いましたが、ここでは Dockerfile を使って作る方法を書きます。

ssh-ignorekey エイリアス

コンテナを作り直しても、 known_hosts ファイルによって接続エラーにならないように以下のエイリアスを定義しています

alias ssh-ignorekey='ssh -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no'

空パスワードまたは指定したパスワードで root ログインできるコンテナを作りログインする方法

  1. Dockerfile

    FROM centos
    
    RUN yum -y install initscripts MAKEDEV
    
    RUN yum check
    
    RUN yum -y update
    
    RUN yum -y install openssh-server
    
    # 空パスワードの場合は以下をコメントアウト
    # RUN sed -ri 's/^#PermitEmptyPasswords no/PermitEmptyPasswords yes/' /etc/ssh/sshd_config
    
    RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
    RUN sed -ri 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
    
    RUN /etc/init.d/sshd start
    
    # 空パスワードの場合は以下をコメントアウト
    # RUN passwd -d root
    
    # 任意のパスワードの場合は以下をコメントアウト & パスワードを書き換える
    # RUN echo 'root:root' | chpasswd
    
    EXPOSE 22
    
    CMD /sbin/init
    
  2. コンテナイメージ作成

    docker build -t ssh-enabled .

  3. コンテナ起動

    CONTAINER_ID=$(docker run -P -d ssh-enabled) && SSH_PORT=$(docker port $CONTAINER_ID 22 | cut -d: -f2) && SSH_HOST=$(docker port $CONTAINER_ID 22 | cut -d: -f1);
    
  4. SSH ログイン

    ssh-ignorekey -p $SSH_PORT root@$SSH_HOST
    

鍵認証で root ログインできるコンテナを作りログインする方法

  1. Dockerfile

    FROM centos
    
    RUN yum -y install initscripts MAKEDEV
    
    RUN yum check
    
    RUN yum -y update
    
    RUN yum -y install openssh-server
    
    RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
    RUN sed -ri 's/^UsePAM yes/UsePAM no/' /etc/ssh/sshd_config
    
    RUN /etc/init.d/sshd start
    
    RUN sed -ri 's/^(root):[^:]*:(.*)$/\1:*:\2/' /etc/shadow
    
    RUN ssh-keygen -f ~root/.ssh/id_rsa -t rsa -b 2048 -N ''
    RUN cp ~root/.ssh/id_rsa.pub ~root/.ssh/authorized_keys
    RUN chmod 0600 ~root/.ssh/authorized_keys
    
    EXPOSE 22
    
    CMD /sbin/init
    
  2. コンテナイメージ作成

    docker build -t ssh-enabled .

  3. コンテナ起動

    CONTAINER_ID=$(docker run -P -d ssh-enabled) && SSH_PORT=$(docker port $CONTAINER_ID 22 | cut -d: -f2) && SSH_HOST=$(docker port $CONTAINER_ID 22 | cut -d: -f1);
    
  4. 鍵コピー

    docker cp $CONTAINER_ID:/root/.ssh/id_rsa $CONTAINER_ID
    
  5. SSH ログイン

    ssh-ignorekey -i $CONTAINER_ID/id_rsa -p $SSH_PORT root@$SSH_HOST
    
comuttun
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away