docker container끼리 SSH 통신 : 필자의 경우는 (airflow에서 dag를 작성하고 commands로 데이터 파이프라인 .py 실행)
docker container는 그 하나의 container가 각각의 다른 컴퓨터로 생각하는게 편하다.
컨테이너 끼리의 ssh통신은 ex ) pyspark 컨테이너에서 실행할 때 ssh key-gen을 통해 키를 발급하고 airflow container에 넣어야하고 서버에서 가져올때 서버의 바스티온을 pyspark에서 열어놔야한다 .
(docker exec -it -d [container name] ssh~~~)
필수!
$ service ssh start
접속할 컨테이너에서 키를 발급
$ ssh-keygen -t rsa
엔터 연타!!(출처에 들어가면 옵션에 대한 내용을 알수있다.)
- id_rsa: 비밀키
- id_rsa.pub: 공개키
키를 전달해 주기 전에 해야되는 작업
$nano /etc/ssh/sshd_config
에서
- PermitRootLogin yes
을 허용해줘야한다. --> root 로그인을 허용해주는 명령어인데 허용해서 키전달을하고 다시 주석처리하면 다시 root로 로그인 불과.
새로운 계정을 만들고 사용해야되는 폴더에 권한을 부여해아한다. - (보안이 취약)
ssh-copy-id는 현재 컨테이너에 저장된 모든 공개키를 전송 (접속할 컨테이너에서 나는 airflow컨테이너)
- 포트 22가 아닐경우
$ scp -P 3000 ~/.ssh/id_rsa.pub user@hostname:/id_rsa.pub $ scp -P [portnum] ~/.ssh/id_rsa.pub [username]@[ip addres]:/id_rsa.pub
$ ssh-copy-id user@hostname
$ ssh-copy-id [username]@[ip주소]
ssh로 명령어를 받는 컨테이너에서 (명령어를 실행하는 컨테이너)
- 포트 22가 아닐경우 먼저 해야 하는 작업
$ touch ~/.ssh/authorized_keys
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
설정파일 /etc/ssh/sshd_config을 열어 아래 항목들의 주석을 제거하거나 없는 경우 추가합니다.
- RSAAuthentication yes
- PubkeyAuthentication yes
- AuthorizedKeysFile .ssh/authorized_keys
- PasswordAuthentication no
- AllowUsers [a],[b],[c]
* root PermitRootLogin no 했을때는 root로 로그인 하지못한다.
출처 : https://jeonghwan-kim.github.io/%EC%9B%90%EA%B2%A9%EB%A1%9C%EA%B7%B8%EC%9D%B8ssh-%EC%A0%91%EC%86%8D/
'Ubuntu' 카테고리의 다른 글
Crontab (0) | 2021.11.25 |
---|---|
ubuntu 업데이트 오류시 검정화면 ...시 대처 (0) | 2021.08.10 |
SSH KEY 생성하기 (0) | 2021.07.05 |
우분투 인코딩 변경~ (0) | 2021.06.24 |
trans-mission 설치 (0) | 2020.11.08 |