LoginSignup
31
44

More than 5 years have passed since last update.

ssh接続先としてのdockerコンテナ作成

Last updated at Posted at 2018-08-02

たまにsshが必要なツールを使うときにコンテナに繋ぎたいということありますね
それ用のdockerイメージと接続までの流れのメモ

dockerイメージの作成

CentOS7でやる

FROM centos:centos7


RUN yum -y update && yum clean all
RUN yum install -y which
RUN yum install -y wget
RUN yum install -y tar
RUN yum install -y vim
RUN yum install -y git
RUN yum -y install openssh-server openssh-clients

RUN mkdir  ~/.ssh \
    touch  ~/.ssh/authorized_keys \
    chmod 600  ~/.ssh/authorized_keys


CMD /bin/bash

vimとかgitとか入れてるのは趣味、build遅くなるので無くても大丈夫

イメージのビルド 

docker build -t centos7ssh ./

docker runからssh設定まで

まずはssh接続先のコンテナを起動

docker run --privileged --rm -d -p 2222:22 -p 5000:80 --name centos7sshcontainer centos7ssh /sbin/init

次にMacやWinなどのローカルマシン上でsshキー作成
キーの名前とかは好きに付けてください
ssh試したい度に何回も作るのは面倒なので~/.ssh/local_container_id_rsaとか作っといて使い回すといいんじゃないでしょうか

ssh-keygen -t rsa -b 4096

生成されたlocal_container_id_rsa.pubの中身をコピーしてコンテナ内の~/.ssh/authorized_keysにペーストします

コンテナ接続コマンド

docker exec -it centos7sshcontainer bash

ローカルマシンのssh configを編集してコンテナへの接続情報を追記

vim ~/.ssh/config
Host centos7ssh
    HostName 0.0.0.0
    User root
    Port 2222
    IdentityFile ~/.ssh/local_container_id_rsa

ローカルマシンからssh接続

ssh centos7ssh

入れるはず

不要になったらコンテナをstopしておく(削除も同時に行われる)

docker stop centos7sshcontainer

注意

sshした後1度コンテナを破棄して同じようにコンテナを作成して接続しようとするとknown_hostsに同じのあるぞと言われるので~/.ssh/known_hosts[0.0.0.0]:2222から始まる行を削除してからsshログインを実行すると入れる

参照

31
44
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
44