Life style/TIL

GitHub에서 사용되는 SSH는 뭘까?

jaewpark 2024. 6. 29. 08:48

Secure SHell의 약자로 네트워크상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 프로토콜을 가리킵니다.
SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보입니다.

일반적인 역할

  • 원격 로그인: 원격 서버에 안전하게 접속하여 명령을 실행
  • 파일 전송: SCP나 SFTP을 사용하여 파일을 안전하게 전송
  • 포트 포워딩: SSH 터널을 통해 네트워크 서비스에 안전하게 접근
  • 자동화 및 스크립팅: SSH 키를 사용하여 비밀번호 없이 자동으로 스크립트를 실행하거나 작업을 자동화

GitHub에 연결

SSH 키를 사용하면 방문할 때마다 사용자 이름 및 personal access token을 제공하지 않고 GitHub에 연결할 수 있습니다.

  1. 키 생성
    ed25519 알고리즘을 통해 ssh 키 생성합니다.
    -C "your_email@example.com" 를 키에 주석으로 추가하여 식별할 수 있도록 합니다.
    ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 해당 알고리즘을 사용할 수 없는 경우 RSA 알고리즘을 사용하여 키를 생성합니다.
    키의 비트 길이는 4096비트로 설정합니다.
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  3. 키 저장
    ~/.ssh 디렉토리에 id_rsaprivate keyid_rsa.pubpublic key 라는 이름으로 저장
  4. 공개 키 배포
    public key를 GitHub 서버에 제공

SSH 동작 원리

  • 클라이언트 연결 요청: 클라이언트가 SSH를 통해 서버에 연결을 시도
  • 서버 공개 키 요청: 서버는 클라이언트에게 클라이언트의 공개 키를 요청
  • 서버의 챌린지: 서버는 클라이언트에게 난수 데이터를 전송
  • 클라이언트의 응답: 클라이언트는 개인 키를 사용하여 이 난수를 암호화하고 서버에 전송
  • 서버의 검증: 서버는 클라이언트의 공개 키로 이 암호화된 데이터를 복호화하여 올바른지 검증합니다. 올바르다면, 서버는 클라이언트를 신뢰하고 접속을 허용

왜 사용해야 될까?

  1. SSH는 암호화를 통해 안전하게 파일을 전송
  2. 접근할 때 사용자 이름과 비밀번호를 입력해야 되는 상황을 제거하여 편리함을 제공
  3. CI/CD 파이프라인과 같은 자동화 스크립트에서 GitHub에 접근 가능

암호화와 관련된 이전 글

 

암호화와 보안의 기본 개념과 iOS 앱 보안을 위한 방안

암호화는 정보를 인코딩하는 프로세스이다.암호화에 사용되는 키가 있으며, 키를 통해서 암호문을 생성한다. 암호화된 정보를 사용하기 위해서는 키를 이용하여 암호문을 복호화한다. 암호화

raidho.tistory.com

 

Reference