学習用にメモ。
"slave"と"master"の2台のコンテナを立ち上げて、"slave"→"master"にssh接続してみる。
準備
・Dockerfileを用意。
# 使用するOS
FROM ubuntu:21.10
# コマンド準備
RUN apt-get update && \
apt-get install -y vim && \
apt-get install -y sudo
# SSHプロトコルを利用するためのソフトウェアをインストール
RUN apt-get install -y openssh-server
# 公開鍵と秘密鍵用
RUN mkdir ~/.ssh && \
touch ~/.ssh/authorized_keys && \
chmod 600 ~/.ssh/authorized_keys
・ネットワークを作成(コンテナ間で通信ができるように。)
$ docker network create ssh_network
イメージを作成
$ docker build -t sshcontainer:test .
コンテナを起動
$ docker run -it --name master -p 2222:22 --network ssh_network sshcontainer/test
$ docker run -it --name slave -p 2233:22 --network ssh_network sshcontainer/test
slave側で公開鍵と秘密鍵を作成
# cd ~/.ssh
// 作成
# ssh-keygen
master側で公開鍵のコピー
// slave側で先ほど作成した公開鍵(デフォルトなら"id_rsa.pub")をコピー。
# vim ~/.ssh/authorized_keys
// 公開鍵をペースト。
master側コンテナのsshのポート番号を変更
# vi /etc/ssh/sshd_config
// 以下のようにデフォルトではなっているので、Portを2222にしてコメントアウトを外す。
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22 ← コメントアウトを外して"Port 2222"に変更する。
ssh-server再起動
# sudo /etc/init.d/ssh restart
ssh接続
# ssh root@master
※参考にさせていただいたURL(ほぼここ)
Dockerコンテナ間でssh接続をする