학교에서 하는 캡스톤프로젝트(구 종합설계)를 준비하는 와중에
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