문제
사내 저장소를 Bitbucket에서 Github로 이전하게 되면서 편의성과 보안성 모두를 위해 PKA(Public Key Authentication)
기반의 SSH 키 등을 사용하여 개발을 진행하게 되었습니다.
이때 git을 이용하여 push나 pull 등 다양한 작업을 할 때 ssh연결을 여러 번 붙어야 하는 경우,
매번 passphrase를 요구하고 있어 불편함을 느껴 다른 방법을 찾게 되었습니다.
사실 보안적인 이유로 매번 passphrase를 입력해 주는 것도 좋지만, 귀찮고 불편하기 때문에 해당 과정을 건너뛸 수 있는 방법과 ssh 환경이 무엇인지를 작성해 보려고 합니다.
(코드만 보고 싶으시다면 목차에서 해결방법을 눌러주세요!)
SSH란?
SSH란 Secure Shell Protocol, 즉 네트워크 프로토콜 중 하나로 PC 간 인터넷 같은 Public Network를 통해 서로 통신을 할 때 보안적으로 안전하게 통신하기 위해 사용하는 프로토콜입니다. (공개 키 암호화 방식 및 인증 확인 응답 인증에 사용)
대표적으로 '데이터 전송'과 '원격 제어'에 사용되며 다른 통신 프로토콜과 다른 점은 "보안"적인 부분에서 훨씬 뛰어나다는 점인데 그 이유는 SSH는 다른 컴퓨터와 통신을 하기 위해 접속할 때 일반적인 방법인 비밀번호의 입력을 통한 접속을 하지 않기 때문입니다.
기본적으로 SSH는 한 쌍의 Key를 통해 접속하려는 컴퓨터와 인증 과정을 거치게 되는데 이때 사용하는 한 쌍의 Key는 다음과 같습니다.
- Private Key
- Public Key
먼저 Public Key는 공개되어도 안전한 Key로 사용자는 이 Public Key를 통해 메시지를 전송하기 전 암호화 과정을 거치게 됩니다.
다만 이 Public Key로는 암호화는 가능하지만 복호화는 불가능합니다.
반면에 Private Key는 절대로 외부에 노출되어서는 안 되는 Key로 개인 PC 내부에 저장하게 되어있습니다.
이 Private Key를 통해 암호화된 메시지를 복호화할 수 있습니다.
정리하자면, 사용자는 다른 컴퓨터와 통신을 하기 위해서는 먼저 Public Key를 통신하고 개인 PC에 복사하여 저장합니다.
그리고 접속 요청이 오면 응답하는 서버 사이드 컴퓨터에 복사되어 저장한 Public Key와 클라이언트 사이드에 해당 Public Key와 쌍을 이루는 Private Key와 비교를 하여 서로 한 쌍의 Key인지 아닌지 검사합니다.
이때 서로 관계를 맺고 있는 Key라는 것이 증명되면 비로소 두 컴퓨터 사이에 암호화된 채널이 형성되어 Key를 활용해 메시지를 암호화하고 복호화하며 데이터를 주고받을 수 있게 됩니다.
해결 방법
ssh-agent를 통해 미리 passphrase 값을 pc에 등록해 두고 재사용하여 해결하는 방법이 있습니다.
우선, ssh-agent가 실행되지 않을 수 있으니 아래 명령어를 먼저 실행합니다.
ssh-agent -s
그다음 PKA 기반의 ssh를 구성할 때 만든 키를 ssh-add로 agent에 등록해 줍니다.
ssh-add ~/.ssh/id_rsa
이후 -l 옵션을 이용하여 확인하면 SHA256 알고리즘으로 생성된 해쉬 값을 확인할 수 있으면 성공입니다.
이후 ssh 접근 시 passphrase를 묻지 않고 바로 접근하는 것을 확인할 수 있습니다.
참고 링크
https://www.youtube.com/watch?v=jUyrwaCct44
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases https://www.youtube.com/watch?v=qkGaUqlH47s&t=942s
https://blog.robertelder.org/what-is-ssh/
끝!
'WEB > React, JS, TS 및 기타' 카테고리의 다른 글
[JS] 고인물처럼 로그 찍기 (1) | 2024.03.12 |
---|---|
React 개발자를 위한 Google Ad Manager 반응형 광고 연동하기 (1) | 2024.03.06 |
React Children API 알아보기 + 덜 사용하기 (4) | 2024.01.26 |
Lighthouse로 서비스 성능 개선하기 (0) | 2023.11.13 |
iframe에서 GA4(gtag) 이벤트 추가하기 (부제: Outlook Add-in에서 GA4 이벤트 추가하기) (0) | 2023.10.01 |