Post

로컬 PC와 원격 서버, Github를 연결하는 방법, SSH

로컬 PC와 원격 서버, Github를 연결하는 방법, SSH

내 PC와 리눅스 서버를 연결할 때, 내 PC와 깃헙 원격 저장소를 연결할 때, 리눅스 서버와 깃헙 원격 저장소를 연결할 때.

이 모든 경우에 접속 대상 기기와 서버 기기 사이에 인증 과정이 필요합니다. 홈페이지에 내 계정으로 로그인하듯, 서버에 내가 로그인하기 위한 보안 과정이라고 생각할 수 있습니다.

HTTPS / SSH가 주로 많이 쓰이는 연결 방식이며 초기 설정은 HTTPS가 더 간단하지만 장기적인 편의성과 보안 면에서는 SSH가 월등히 뛰어납니다.

  • HTTPS: ID와 비밀번호를 사용하는 익숙한 방식입니다.
  • SSH: 키(Key) 한 쌍을 사용하는 더 안전하고 편리한 방식입니다.

개인 노트북이라면 간단한 HTTPS 방식도 괜찮지만, 연구실처럼 여러 사람이 함께 사용하는 중요한 서버에서는 몇 분만 더 투자해서 보안과 편의성이 훨씬 뛰어난 SSH 방식을 설정하시는 것을 강력히 추천합니다.

SSH 키 인증의 원리

쉽게 비유하자면, SSH 키는 ‘열쇠와 자물쇠’ 한 쌍으로 이루어져 있습니다.

비밀 키 (Private Key, id_rsa): 나만 가지고 있는 ‘열쇠‘입니다. 내 계정 안에 안전하게 보관하며 절대 외부에 노출해서는 안 됩니다.

공개 키 (Public Key, id_rsa.pub): 내가 가진 열쇠에만 맞는 ‘자물쇠‘입니다. 이 자물쇠는 복사해서 다른 원격 서버(예: 공용 서버, GitHub 원격 저장소)에 등록할 수 있습니다.

SSH 설정 방법

SSH 연결 설정을 하는 것은 크게 (1) 내 PC에서 비밀 키와 공개 키 모두 생성하기 (2) 공개 키를 서버에 등록하기의 두 단계로 나눌 수 있습니다.

사실 윈도우 / 맥에서 깃헙 원격 저장소와 연결하는 것은 굳이 HTTPS나 SSH같은 설정을 사용하는 것보다 Github Desktop을 설치하는 것이 압도적으로 편리하다고 생각합니다.

따라서 본 게시물에서는 윈도우 PC - 리눅스 서버, 리눅스 서버 - 깃헙 저장소의 케이스를 바탕으로 설명하겠습니다. 맥 역시 터미널에서 동일하게 진행합니다.

내 PC에서 해야 할 일

먼저 cmd, powershell 등등을 켜주세요. Window + R을 누른 후 cmd를 검색하셔서 엔터 누르시면 됩니다.

리눅스 서버에서 깃헙 저장소와 연결하고 싶은 경우에도 동일하게 리눅스 터미널에서 아래 명령어를 입력하시면 됩니다!

cmd 창에 아래와 같이 입력합니다.

1
ssh-keygen

이어서 아래와 같은 세 줄이 나올텐데, 각 줄이 나올 때마다 엔터를 총 세 번 눌러줍니다.

1
2
3
Enter file in which to save the key (C:\Users\(username)/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

그럼 이제 SSH 비밀키와 공개키 생성을 완료한 것입니다.

아래와 같이 비밀키와 공개키가 저장된 경로가 나올 것입니다.

1
2
Your identification has been saved in C:\Users\(username)/.ssh/id_ed25519
Your public key has been saved in C:\Users\(username)/.ssh/id_ed25519.pub

위 경로로 따라 들어가서 id_ed25519.pub (또는 id_rsa.pub) 파일을 찾습니다. 파일을 열면 안에 아래와 같은 내용이 있을 것입니다.

1
ssh-rsa (공개 키) = (username)@(DESKTOP 이름)
  • GitHub 저장소와 연결하고 싶은 경우
    • .pub 확장자의 파일을 열어 안에 있는 문자를 그대로 드래그해서 복사합니다.
  • 리눅스 서버와 연결하고 싶은 경우
    • 위 경로에 있는 id_ed25519 파일을 통째로 복사합니다.

PC에서 해야 할 일은 끝입니다!

서버/GitHub에서 해야 할 일

이제 앞서 만든 SSH 비밀 키와 공개 키 중, 공개 키 (Public Key)를 서버에 등록할 차례입니다.

Github에 등록

오른쪽 위 계정 아이콘 클릭 - Settings - SSH and GPG keys 메뉴로 접속합니다.

오른쪽 위에 있는 New SSH key 버튼을 누르면 아래와 같은 창이 뜹니다.

Github add new ssh key

Title에는 이 key가 어떤 기기에서 생성한 것인지 본인이 알아서 식별만 할 수 있도록 이름을 지어줍니다. Key type은 굳이 건들 필요 없습니다.

Key에는 아까 복사해준 Public Key를 복사해넣습니다.

이제 SSH 설정이 완료되었습니다.

GitHub Repository를 내 로컬 PC에 Clone하여 사용하고 싶다면?

먼저 github 웹페이지에서 로그인한 후 클론하고 싶은 repository 페이지로 들어갑니다.

아래 사진과 같이 Code를 누른 후, SSH를 선택하여 복사해둡니다.

Github clone ssh key

이후 Clone하고자 하는 로컬 폴더로 들어간 후 아래와 같이 명령어를 쳐줍니다.

1
C:\Users\(Username)\....(폴더 디렉토리)...\

리눅스 서버에 등록

리눅스 서버의 터미널에서 사용자의 메인 폴더에서 .ssh 이름의 폴더를 찾습니다.

1
C:\Users\(Username)\.ssh

해당 이름의 폴더가 없다면 새로 만드시면 됩니다. 참고로 리눅스에서 하위 디렉토리로 들어가는 명령어와 상위 디렉토리로 나오는 명령어, 그리고 새 디렉토리 생성 명령어는 아래와 같습니다.

1
2
3
cd (폴더 이름)
cd ..
mkdir (새 폴더 이름)

해당 폴더 안에 앞서 PC에서 복사해둔 .pub 파일을 붙여넣습니다. (VSCode에서 remote ssh를 사용하면 쉽게 가능합니다.)

이후 아래 명령어를 리눅스 터미널에 입력해줍니다. id_rsa.pub 부분은 .pub 파일의 이름에 맞게 변경해줍니다.

1
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

서버는 authorized_keys 파일 내에 여러 기기들의 공개키를 저장해두게 되는데, 앞서 생성한 공개 키를 서버에 알려주는 과정입니다. 이 과정이 잘 이루어졌다면 서버에 붙여넣었던 id_ed25519.pub 파일은 지워도 무방합니다.

만약 파일 붙여넣기에 어려움을 겪으신다면, 직접 mkdir 명령어를 통해 authorized_keys 파일을 생성하신 후, VSCode 등 편집기를 통해 해당 파일 내에 공개 키를 직접 복사 / 붙여넣기 하셔도 됩니다.

This post is licensed under CC BY 4.0 by the author.