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

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

More than 1 year has passed since last update.

たまに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ログインを実行すると入れる

参照

https://qiita.com/3104k/items/16102a64fb1bae6665af

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