2 분 소요

소스 코드가 있는 서버를 이전 해야 할 경우가 있습니다.

  • A: 소스 코드 서버 - ubuntu 20.04(원격 서버)
  • B: 이전 대상 서버 - ubuntu 20.04(다른 원격 서버)
  • A에서 B로 소스 코드 이전
  • A에서 github로 ssh key 로 인증함 ssh key 인증: Github ssh - 원격 서버에서 Github 접속하기 참조

github의 ssh key 인증을 잘 아시는 분들은 별 문제 없으시겠지만, 초보자 분들은 어려움을 겪으실 수 있습니다.

무작정 clone 하기

음… 그냥 clone 하면 되지 않을까요?

먼저 github repository의 ssh url을 복사합니다.
github repository로 이동 -> 우측 상단의 Code 버튼 클릭 -> SSH 클릭 -> 복사 아이콘 클릭

이전 대상 서버(B)에 접속하여 clone을 실행해 보겠습니다.

cd ~/app/... # clone할 디렉토리로 이동
git clone '조금 전 복사 한 github repository ssh url'
Cloning into 'repository name'...
The authenticity of host 'github.com (20.200.245.247)' can't be established.
ECDSA key fingerprint is ...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

호스트의 진위 여부를 확인할 수 없다는 메시지와 계속 연결할 것인지 묻는 메시지가 나옵니다. yes를 입력하고 엔터를 칩니다.

Warning: Permanently added 'github.com,20.200.245.247' (ECDSA) to the list of known hosts.
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

github의 ssh key 인증을 하지 않았기 때문에 접근 권한이 없다는 메시지가 나옵니다.

*ssh key 인증을 해야 repository에 접근할 수 있습니다.


그럼 기존 서버에서 ssh-key를 생성 했는데 어떻게 해야 하지?

2가지 방법이 있습니다.

  1. 이전 대상 서버에서 새로운 ssh-key를 생성하여 github에 등록
  2. 기존 서버의 ssh-key를 복사하여 이전 대상 서버에 붙여 넣어서 사용

이전 대상 서버에서 새로운 ssh-key를 생성하여 github에 등록

Github ssh - 원격 서버에서 Github 접속하기를 참조 하시면 됩니다. 서버 이전이라 생각하실 필요 없이 ssh-key 등록 과정을 그대로 하시면 됩니다.

ssh-key를 생성하고 github에 등록하였다면 이전 대상 서버에서 clone을 실행하면 됩니다.

cd ~/app/... # clone할 디렉토리로 이동
git clone '조금 전 복사 한 github repository ssh url'

정상적으로 clone이 완료 됩니다.

기존 서버의 ssh-key를 복사하여 이전 대상 서버에 붙여 넣어서 사용

기존 서버의 ~/.ssh 디렉토리 전체를 복사해서 이전 할 서버의 동일한 경로인 ~/.ssh로 붙여넣습니다.

복사한 파일이 있는 ~/.ssh로 이동합니다.

cd ~/.ssh
ls -al
-rw-rw-r-- 1 dev01 dev01 3434 Dec 28 11:21 id_rsa
-rw-rw-r-- 1 dev01 dev01  742 Dec 28 11:21 id_rsa.pub
-rw-rw-r-- 1 dev01 dev01  444 Dec 28 11:21 known_hosts

파일 권한을 변경합니다.

 chmod 600 id_rsa
 chmod 644 id_rsa.pub known_hosts
-rw------- 1 dev01 dev01 3434 Dec 28 11:21 id_rsa
-rw-r--r-- 1 dev01 dev01  742 Dec 28 11:21 id_rsa.pub
-rw-r--r-- 1 dev01 dev01  444 Dec 28 11:21 known_hosts

ssh-key는 준비가 되었습니다. github에 key를 등록 할 필요도 없습니다. 이미 등록되어 있으니까요.

이전 대상 서버에서 clone을 실행하면 됩니다.

cd ~/app/... # clone할 디렉토리로 이동
git clone '조금 전 복사 한 github repository ssh url'

정상적으로 clone이 완료 됩니다.

추가 작업

git config 설정

이전 대상 서버에서 git config 설정을 해야 합니다.

제 경우는 각 프로젝트 단위 local로 git config를 설정을 하고 있습니다. 소스 코드를 clone한 디렉토리로 이동하여 git config를 설정합니다.

cd ~/app/... # clone한 디렉토리로 이동
git config user.name 'github user name'
git config user.email 'github email'

git config를 설정 한 후에 git push를 할 수 있습니다.

requirements.txt 실행

이전 대상 서버의 가상 환경에서 requirements.txt를 실행하여 필요한 패키지를 설치합니다.

cd ~/app/... # clone한 디렉토리로 이동
pip3 install -r requirements.txt

ssh-key 인증에 대한 개념이 정확하게 잡히지 않으신 분들에게는 도움이 되셨으면 합니다.


해시태그: #ubuntu #github #remote-server #ssh-keygen #ssh-key복사

댓글남기기