Life style/TIL
GitHub에서 사용되는 SSH는 뭘까?
jaewpark
2024. 6. 29. 08:48
Secure SHell의 약자로 네트워크상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 프로토콜을 가리킵니다.
SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다고 하더라도 이해할 수 없는 암호화된 문자로 보입니다.
일반적인 역할
- 원격 로그인: 원격 서버에 안전하게 접속하여 명령을 실행
- 파일 전송: SCP나 SFTP을 사용하여 파일을 안전하게 전송
- 포트 포워딩: SSH 터널을 통해 네트워크 서비스에 안전하게 접근
- 자동화 및 스크립팅: SSH 키를 사용하여 비밀번호 없이 자동으로 스크립트를 실행하거나 작업을 자동화
GitHub에 연결
SSH 키를 사용하면 방문할 때마다 사용자 이름 및 personal access token을 제공하지 않고 GitHub에 연결할 수 있습니다.
- 키 생성
ed25519
알고리즘을 통해 ssh 키 생성합니다.-C "your_email@example.com"
를 키에 주석으로 추가하여 식별할 수 있도록 합니다.ssh-keygen -t ed25519 -C "your_email@example.com"
- 해당 알고리즘을 사용할 수 없는 경우
RSA
알고리즘을 사용하여 키를 생성합니다.
키의 비트 길이는 4096비트로 설정합니다.ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 키 저장
~/.ssh
디렉토리에id_rsa
private key 와id_rsa.pub
public key 라는 이름으로 저장 - 공개 키 배포
public key를 GitHub 서버에 제공
SSH 동작 원리
- 클라이언트 연결 요청: 클라이언트가 SSH를 통해 서버에 연결을 시도
- 서버 공개 키 요청: 서버는 클라이언트에게 클라이언트의 공개 키를 요청
- 서버의 챌린지: 서버는 클라이언트에게 난수 데이터를 전송
- 클라이언트의 응답: 클라이언트는 개인 키를 사용하여 이 난수를 암호화하고 서버에 전송
- 서버의 검증: 서버는 클라이언트의 공개 키로 이 암호화된 데이터를 복호화하여 올바른지 검증합니다. 올바르다면, 서버는 클라이언트를 신뢰하고 접속을 허용
왜 사용해야 될까?
- SSH는 암호화를 통해 안전하게 파일을 전송
- 접근할 때 사용자 이름과 비밀번호를 입력해야 되는 상황을 제거하여 편리함을 제공
- CI/CD 파이프라인과 같은 자동화 스크립트에서 GitHub에 접근 가능
암호화와 관련된 이전 글