본문 바로가기

docker

docker의 ubuntu container에 ssh로 접속하기

학교에서 하는 캡스톤프로젝트(구 종합설계)를 준비하는 와중에

ubuntu container를 생성하고

AWS의 instance에 연결하는 것처럼 ssh 연결을 설정해 줄 일이 생겼다.


테스트는 vmware에서 ubuntu 설치 후 docker를 설치하였다.


1. 이미지 생성 시

docker run -dit -p 'host port':'container port' --name 'name' ubuntu


-d: background에서 계속 실행하도록 설정

-p: 포트 설정, host-ip와 container ip를 포워딩(매핑?) 해주는 것. (ex. 1200:22일 경우: host의 1200번 포트로 접근하면 container의 22번포트로 연결)

--name: 이름 설정


2. container에 접속

docker attach 'name'

: 1에서 설정한 이름을 넣는다.

  변화가 없을 경우 키보드에서 아무키나 눌러본다.


3. 업데이트 및 설치

apt-get update

: 이유는 모르겠지만 업데이트를 하지 않으면 apt-get install이 먹히지 않는다.

  2의 command로 접속 시 root로 접속하므로 sudo가 필요하지 않다.


apt-get install net-tools vi openssh-server

: net-tools - ifconfig를 사용하기 위한 것인데 해당 command를 사용하지 않는 경우 필요한지는 잘 모르겠다.

  vi - 4에서 필요하다.

  openssh-server - ssh 접속을 위해 필요하다.


4. ssh config 변경

vi /etc/ssh/sshd_config

파일 가운데의 PermitRootLogin을 yes로 바꿈

: 해당 설정을 바꾸지 않으면 다른 컴퓨터에서 일치하는 root 비밀번호를 넣더라도 접속이 되지 않는다.

  root로 접속하면 모든 권한을 가지므로 위험할 수 있어서 그런 것 같은데 나중에 root가 아닌 다른 사용자 이름으로 접속하는 경우는 따로 알아보아야한다.


(선택) root password 변경

passwd root

: root의 비밀번호를 바꾼다. 초기 container 생성 시 비밀번호가 설정되어 있지 않으므로 이 작업을 해야한다.


5. ssh 서비스 시작

service ssh start

: container에서 ssh를 시작한다.


-------------------------------------------------------------


ssh 접속 방법


Windows에서 제공하는 Linux Subsystem이나 리눅스의 bash shell

혹은 mac의 터미널(시험해보진 않았지만 가능?)에서


ssh -l root -p 'port number' 'ip address' 를 입력하면

root 비밀번호를 요구하는데, 입력하면 해당 container를 사용할 수 있다.



참고

docker command: https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html

openssh 설치: https://superuser.com/questions/226689/how-can-i-connect-via-ssh-putty-to-my-vmware-machine-ubuntu

ssh config 설정: https://unix.stackexchange.com/questions/79449/cant-ssh-into-remote-host-with-root-password-incorrect