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 모두에서 실행해야 한다.
|
위의 한 줄짜리 명령어를 실행하고 나면 비밀번호를 주르륵 물어보는데,
비밀번호 넣지 않은 상태로 그냥 엔터를 눌러 넘어가면 된다.
그럼 HOME path(~) 위치에 .ssh dir 가 생성되고 그 안에 공개키/개인키가 생성된다.
cw-test1 에 접속하여 아래 명령어를 실행하여 pub key를 출력한다.
출력된 pub key 를 복사해둔다.
|
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/
'Docker' 카테고리의 다른 글
[Docker] Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 해결 방법 링크 (0) | 2020.09.15 |
---|---|
[Docker] root 유저로 컨테이너 접속하기 (0) | 2020.09.09 |
[Docker] Resource 제한하는 방법 (1) | 2019.11.05 |
[Docker] swarm join 명령어 다시 만들기 (0) | 2019.06.05 |
[Docker] 똑같은 ip subnet을 갖는 overlay network 두 개를 만들면 어떻게 될까? (0) | 2019.05.23 |