目次
概要
コンテナ上に ssh サーバーを起動し、パスワード認証または公開鍵認証を行う方法について解説します。
パスワードでログインする Docker コンテナ
使い方
ソースは pystyle/docker/ssh_passwd になります。
- Dockerfile をダウンロードします
docker-compose up -d
でコンテナをビルドし、バッググラウンドで起動しますssh root@<Docker が起動しているマシンのホスト> -p 2222
でログインします- 例:
ssh@127.0.0.1 -p 2222
- 例:
- 初回起動時は公開鍵の指紋を登録するかどうか聞かれるので
yes
と入力します - パスワードに
root
と入力します。
解説
apt-get
でopenssh-server
をインストールします。echo "ユーザー名:パスワード" | chpasswd
でパスワードを設定します。sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config
でroot
ユーザーのログインを許可するように設定を変更します。(デフォルトではroot
ユーザーのログインは許可されていない)service ssh start
でsshd
を起動します。
公開鍵でログインする Docker コンテナ
使い方
ソースは pystyle/docker/ssh_pubkey になります。
- Dockerfile をダウンロードします
- 鍵が用意できていない場合は
ssh-keygen
コマンドで秘密鍵と公開鍵を作成します。いくつか聞かれますが、すべてデフォルトで大丈夫です。 ~/.ssh/id_rsa.pub
(Windows の場合、C:\Users\<USERNAME>\.ssh\id_rsa
) に公開鍵が作成されるので、これをDockerfile
があるディレクトリと同じ場所に起きます。docker-compose up -d
でコンテナをビルドし、バッググラウンドで起動しますssh root@<Docker が起動しているマシンのホスト> -p 2222 -i <秘密鍵のパス>
でログインします- 例:
ssh root@127.0.0.1 -p 2222 -i ~/.ssh/id_ras
- 例:
- 初回起動時は公開鍵の指紋を登録するかどうか聞かれるので
yes
と入力しますECDSA key fingerprint is SHA256:0ttTa27iNJPpxLHNXIAhRwWKOxuRcbYFw9QLMChFXiU. Are you sure you want to continue connecting (yes/no)?
接続時に WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
というエラーが出る場合
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
というエラーが出る場合、以前に同じホストで異なる公開鍵の指紋が ~/.ssh/known_hosts
に登録済みであることを意味します。以下のいずれかの方法で対応してください。
- 方法1:
rm ~/.ssh/known_hosts
でknown_hosts
を削除する。 - 方法2: 接続時に
-o StrictHostKeyChecking=no
オプションをつける、(例:ssh root@127.0.0.1 -p 2222 -i ~/.ssh/id_ras -o StrictHostKeyChecking=no
解説
apt-get
でopenssh-server
をインストールします。echo "ユーザー名:パスワード" | chpasswd
でパスワードを設定します。sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/" /etc/ssh/sshd_config
でroot
ユーザーのログインを許可するように設定を変更します。(デフォルトではroot
ユーザーのログインは許可されていない)sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/" /etc/ssh/sshd_config
で公開鍵認証を有効にするように設定を変更します。id_rsa.pub
の中身を/root/.ssh/authorized_keys
に記述します。/root/.ssh/
の権限を700に設定します。/root/.ssh/authorized_keys
の権限を600に設定します。service ssh start
でsshd
を起動します。
コメント