[Docker] Linux Container 간에 password 없이 ssh 연결하기
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/