投稿日:
2018年3月26日
最終更新日:
【ローカル環境】Docker内のAWS EC2インスタンスコンテナにSSH接続する方法【設定手順まとめ】
YouTubeも見てね♪
【最新機種】GoPro hero11 Black
最新機種でVlogの思い出を撮影しよう!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
レッドブル エナジードリンク 250ml×24本
翼を授けよう!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド
Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!
目次
EC2インスタンスを使いやすくセットアップ
以前、AWSの公式EC2インスタンスのDockerイメージを利用して、ローカルマシンにコンテナを起動する手順を紹介しました。
しかし、初期の構成だと最低限の情報しか含まれていないので、sudoコマンドやcurlコマンド、lessコマンドなどのよく使うコマンドがインストールされていない状態です。
1
2
|
bash-4.2# less /etc/passwd
bash: less: command not found
|
よりEC2インスタンスの環境に近づけるには、ある程度自分でモジュールを整えないと行けなそうですね。
なので、今回はDockerfileを作成し、最低限必要なモジュールをインストールし、かつSSH接続出来るようにするまでの手順を紹介致します。
手順
スポンサーリンク
336×280
前提
- 公式EC2インスタンスのDockerイメージpull済み
参考
・Docker 初心者 | ssh で接続できるサーバーを立てる
ディレクトリ構成
最終的には以下のようなディレクトリ構成になります。
1
2
3
4
5
6
|
.
├── Dockerfile
├── authorized_keys
└── keys
├── id_rsa
└── id_rsa.pub
|
SSH認証鍵の準備
まずは、SSH接続で利用する鍵を作成し、所定のディレクトリに配置します。
以下のコマンドを実行してください。
1
2
3
|
mkdir keys
ssh-keygen
cp keys/id_rsa.pub authorized_keys
|
Dockerfileの作成
前回はコマンドでAmazonLinuxを起動して確認したので、今回はDockerfileを作成して起動しましょう。
Dockerfileの要点としては、以下を定義します。
- 公式EC2インスタンスのDockerイメージを指定
- yumのパフォーマンス改善(4~5行目)
- yumのインストール(8~11行目)
- ユーザーの作成(14~16行目)
- sudo権限の付与(19行目)
- SSHの設定(22~25行目)
- sshdの設定設定(28~30行目)
- sshdの起動(32行目)
- ポートの解放(34行目)
- コンテナの起動(35行目)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
FROM 137112412989.dkr.ecr.us-west-2.amazonaws.com/amazonlinux
# set yum repository mirror for jp
RUN yum -y install yum-plugin-fastestmirror
RUN sed -ri 's/#include_only=.nl,.de,.uk,.ie/include_only=.jp/g' /etc/yum/pluginconf.d/fastestmirror.conf
# install packages
RUN yum -y update
RUN yum -y install vim
RUN yum -y install passwd openssh openssh-server openssh-clients sudo iproute
RUN yum -y install wget curl
# create users
ENV USER {ユーザー名}
RUN useradd $USER
RUN passwd -f -u $USER
# setup sudoers
RUN echo "$USER ALL=(ALL) ALL" >> /etc/sudoers.d/$USER
# setup SSH
RUN mkdir -p /home/$USER/.ssh; chown $USER /home/$USER/.ssh; chmod 700 /home/$USER/.ssh
ADD authorized_keys /home/$USER/.ssh/authorized_keys
RUN chown $USER /home/$USER/.ssh/authorized_keys
RUN chmod 600 /home/$USER/.ssh/authorized_keys
# setup sshd config
RUN sed -ri 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
RUN sed -ri 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config
RUN /etc/init.d/sshd start
EXPOSE 22
CMD ["/sbin/init"]
|
イメージのビルド
では、上記Dockerfileを使ってビルドをしましょう。
以下のコマンドを実行してください。
1 |
docker build -t docker/amzlinux .
|
最終的に以下のログが表示されればビルド成功です。
1
2
|
Successfully built 45e02ef350ef
Successfully tagged docker/amzlinux:latest
|
コンテナの起動
では、ビルドしたイメージを使ってコンテナを起動してみましょう。
以下のコマンドを実行してください。今回はローカルマシンの10000番ポートをコンテナの22番ポートに繋げています。
1 |
docker run -d --name {コンテナ名} -p 10000:22 docker/amzlinux
|
SSH接続
コンテナの起動が完了したら、sshコマンドで接続してみましょう。
以下のコマンドで作成した秘密鍵を使って接続をしてみてください。
1 |
ssh -i keys/id_rsa {ユーザー名}@127.0.0.1 -p 10000
|
正常に接続されましたね。
各種コマンドの確認
では、最後にDockerfileでインストールしたモジュール(コマンド)を確認してみましょう。
今回はとりあえず初期状態では使えなかったsudoコマンドを確認してみます。
以下のコマンドを実行してください。
1 |
sudo su
|
以下のようなログが出れば正常にコマンドが実行出来ています。
1
2
3
4
5
6
7
8
9
10
|
[{ユーザー名}@xxxxxxxxx ~]$ sudo su
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
bash-4.2#
|
終わりに
これで本来のEC2インスタンスに近い状態の環境に設定することが出来ました。
SSH接続や各種コマンドが使えることによって、よりリアルな検証操作を行うことが可能になりますので、是非皆さんも試していてください。