password 없이 ssh 연결이 가능한 Docker Container 2 대를 만들어본다.

 

 

 

일단 Official Ubuntu Docker Image 를 이용하여 2 대의 Container 를 만든다.

두 대의 컨테이너 모두 하나의 네트워크에 묶여있어야 한다(Docker network 만드는 방법은 여기 적지 않음)

 

sudo docker run -itd --network cw-net --name cw-test1 ubuntu:latest /bin/bash

sudo docker run -itd --network cw-net --name cw-test2 ubuntu:latest /bin/bash

 

 

 

 

 

아래 명령어로 컨테이너에 들어간다.

 

sudo docker exec -it cw-test1 bash

sudo docker exec -it cw-test2 bash

 

 

 

 

아래 명령어로 필요한 tool 을 받는다. 참고

두 Container 모두에서 실행해야 한다.

사실 다 설치할 필요는 없고 openssh 관련된 것만 설치하면 됨.

 

apt-get update ; apt-get upgrade -y ; apt-get install -y curl openssh-server openssh-client rsync wget vim iputils-ping htop 

 

 

 

 

아래 명령어로 공개키/개인키 를 만든다.

두 Container 모두에서 실행해야 한다.


ssh-keygen -t rsa

rm -f /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_rsa_key /root/.ssh/id_rsa
ssh-keygen -q -N "" -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -q -N "" -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -q -N "" -t rsa -f /root/.ssh/id_rsa
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

 

위의 한 줄짜리 명령어를 실행하고 나면 비밀번호를 주르륵 물어보는데,

비밀번호 넣지 않은 상태로 그냥 엔터를 눌러 넘어가면 된다.

그럼 HOME path(~) 위치에 .ssh dir 가 생성되고 그 안에 공개키/개인키가 생성된다.

 

 

 

cw-test1 에 접속하여 아래 명령어를 실행하여 pub key를 출력한다.

출력된 pub key 를 복사해둔다.


cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys

 

 

 

 

cw-test2 에 접속하여 ~/.ssh/authorized_keys 에 위에서 복사한 cw-test1 의 pub key 를 덧붙인다.

그냥 vi 로 열어서 가장 끝에 추가로 덧붙이면 됨. 이런 식으로.

 

 

cw-test2 에 접속하여 위에서 한 것처럼 똑같이 pub key를 복사해두고,

cw-test1 에 접속하여 ~/.ssh/authorized_keys 에 cw-test2의 pub key를 덧붙인다.

 

 

 

 

아래 명령으로 ssh service 를 시작한다.

두 Container 모두에서 실행해야 한다.

 

service ssh start

 

 

 

 

 

이제 cw-test1 내에서 ssh 로 cw-test2 에 접속해보자.

 

sudo docker exec -it cw-test1 bash

ssh cw-test2

//Are you sure you want to continue connecting (yes/no)? 라고 물으면 yes 를 타이핑

 

 

 

위 이미지는 실제로 cw-test2 에 ssh 접속했을 때를 보여준다.

root@ 뒤에 id 가 달라진 것을 확인할 수 있다.

 

cw-test2 의 ssh 접속을 끊고싶다면 단순하게 exit 을 타이핑하여 cw-test1 으로 돌아오면 된다.

 

 

 

 

 

CentOS 도 위와 마찬가지로 진행하면 된다.

service 를 시작하기 위해서 다음 명령어를 실행한다.

 

systemctl restart sshd.service
systemctl enable sshd.service

 

추가적으로 .ssh 와 authorized_keys 의 권한을 바꿔줘야 한다.

 

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

 

 

참고

https://opentutorials.org/module/432/3742#

https://blog.asamaru.net/2016/01/26/ssh-login-without-password/

 

+ Recent posts