github rsa 키 등록

이지훈·2022년 4월 28일
0

dockerfile을 github public일때만 정상적으로 빌드할 수 있다.
그래서 private일때도 빌드할 수 있게 설정하자.

ec2에서 깃 클론을 받으면, 이렇게 뜨는데 물론 rsa 키를 등록하지 않아도 아이디, 토큰 등록으로 private repo에서 클론이 가능하다.

근데, docker에서 rsa 를 통해 클론할 방법이 있으니 해보자.

ssh-keygen -t rsa -b 4096 -C "jihoon1234@gmail.com"

rsa 키를 제너레이트하는데, 비트 수가 4096이라는 뜻이다.(default=2048)

그리고 이메일 주소를 넣어준다.

EEnter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

어디에 저장할건지, 추가적인 암호화를 할건지, 하라는데 다 엔터 누르고 넘어갔다.

Your identification has been saved in /home/ubuntu/.ssh/id_rsa
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub
The key fingerprint is:

성공하면 이렇게 뜬다.

cd .ssh/

쳐서 디렉토리로 들어가면

authorized_keys  id_rsa  id_rsa.pub

파일이 생성되어있다.
id_rsa.pub : 공개키 -> 이걸 github에 넣어야함
id_rsa : 개인키

cat id_rsa.pub

이 명령어로 텍스트를 출력하고 그 출력된 것을 깃헙에 등록한다.

그럼 이제 텍스트를 넣어준다.

그럼 ssh key 등록이 완료되었다.

git clone 복붙

하면 되는데, 이것도

are you sure you want to continue connecting?

이 뜬다.

이것도 안하려고 이걸 하는거니까. 추가할 것이 있다.


touch /home/ubuntu/.ssh/known_hosts
ssh-keyscan github.com >> /home/ubuntu/.ssh/known_hosts

우선 해당 디렉토리에 파일을 만들거라는 뜻이다.
keyscan으로 복사를 해와서 해당 디렉토리에 넣어준다는 뜻이다.

cat ~/.ssh/known_hosts

cat : 출력 명령어
~/. : home에서 하나 들어간 디렉토리 위치

git clone ssh 주소

이제 그럼 아무 묻는것 없이 바로 클론이 된다.

이걸 도커파일 안에 작성해줄 것이다.


파일질라로 도커파일을 넣어준다.

도커파일은 아래와 같이 수정했다.

# 파이썬 이미지 다운로드
FROM python:3.9.0

# github private ssh 접속 / docker는 root, aws ec2는 ubuntu 서로 다름
RUN mkdir /root/.ssh/

# 호스트의 파일을 안에 복사함
# 앞 : 호스트 서버의 경로 /  뒤: 컨테이너 안의 경로
#  이미지를 가지는 사람은 private key 또한 입수가 가능함
ADD ./.ssh/id_rsa /root/.ssh/id_rsa

# 권한설정 추가 : 소유자에만 읽기쓰기 권한을 주는것으로 변경한거
RUN chmod 600 /root/.ssh/id_rsa

#  디렉토리를 만들고
RUN touch /root/.ssh/known_hosts

# 복사하는 과정 추가
RUN ssh-keyscan gihub.com >> /root/.ssh/known_hosts

WORKDIR /home/

# 캐시된 데이터를 변경사항 추가해줌 - 의미없는 명령어임
RUN echo "testing1111"

# 깃 저장소와 파일 디렉토리 이름이 같아야 쉬움
RUN git clone ssh 클론주소


# root 위치 , pragmatic : 깃헙 repo 이름
WORKDIR /home/pragmatic/

# 라이브러리 다 설치 -> 컨테이너 안이니까 가상환경 불필요
RUN pip install -r requirements.txt

RUN pip install gunicorn

# 우분투는 mysql이 없으니까 추가로 설치해줘야함
RUN pip install mysqlclient

# 서버 포트 주소
EXPOSE 8000

# 런서버
# CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
# CMD ["gunicorn", "프로젝트명.wsgi", "--bind", "0.0.0.0:8000"]

# 마이그레이트와 런서버를 동시에 돌리게.
# manage.py가 local로 되어있는데, local -> deploy로 바꾸는 역할도 동시에 함 and gunicorn도 deploy 설정 추가해줘야함
# 세팅을 항상 deploy로 해줘야함
CMD ["bash", "-c", "python manage.py collectstatic --noinput --settings=프로젝트명.settings.deploy && python manage.py migrate --settings=프로젝트명.settings.deploy && gunicorn 프로젝트명.wsgi --env DJANGO_SETTINGS_MODULE=프로젝트명.settings.deploy --bind 0.0.0.0:8000"]

그럼 이제 ubuntu에서 실행한다

sudo docker image build -t django_test_image:6 .

관리자명령어로 이미지를 빌드한다.
6번 이미지를 새로 만들어주었다.

Sending build context to Docker daemon  26.34MB
Step 1/15 : FROM python:3.9.0
 ---> 0affb4652fc0
Step 2/15 : RUN mkdir /root/.ssh/

ssh를 통해 자동으로 빌드가 되는것을 알 수 있다.


admin createsuperuser 만들기

방법1. portainer로 접속

portainer 컨테이너에서 >_ 버튼을 누른다.

python manage.py createsuperuser --settings=프로젝트명.settings.deploy


방법2

.pem 파일 있는곳에서 ssh -i .pem ubuntu@ip주소

로그인해서 해당 디렉토리로 이동
거기서

python manage.py createsuperuser --settings=프로젝트명.settings.deploy

로 admin 계정 생성하면 됨


profile
꾸준하게 🐌

0개의 댓글