본문 바로가기
공부/개발 & 컴퓨터

개발자라면 이정도는 알아야하지 않을까?

by algosketch 2023. 2. 11.

이 글은 지속적으로 내용이 추가 될 예정이고, 이론보다는 경험과 생각을 녹인 글이야.

 

자동화에 미친자가 되기 위한 시작은 ssh로부터 시작된다.

ssh(Secure Shell)는 다른 컴퓨터에 원격으로 접속하기 위해 사용하는 프로토콜이야. 윈도우(10이상), 맥, 리눅스 모두 터미널이나 CMD에서 사용할 수 있는 명령어야. 참고로 내 EC2에 접속하려면 ssh ubuntu@algosketch.me를 입력하면 돼. 이메일과 같은 형식이라고 생각하면 이해하기 쉬워. 이메일은 id@host 이고, ssh는 username@host야. 물론 host 대신 ip 주소를 입력해도 돼.

나는 이걸 두 가지 용도로 사용하고 있어. 하나는 아까 말한 EC2 터미널에 접속하기 위해서 사용하고, 나머지 하나는 github에서 사용하고 있지. ssh는 RSA라는 비대칭 암호를 사용해. 공개키와 비공개키로 나뉘는데, 비공개키는 혼자만 알고 있고 공개키는 다른 사람에게 알려줘도 돼. 공개키는 암호화, 비공개키는 복호화에 쓰여. 그래서 암호화는 누구나? 할 수 있지만 복호화는 한 사람만 할 수 있는 거지. 물론 혼자 알고 있을 때.

ssh 키 쌍은 ssh-keygen를 통해 만들 수 있고, 사용자 최상위 폴더 .ssh라는 숨겨진 폴더가 생길 거야. id_rsa와 id_rsa.pub이 추가되는데, pub이 붙은 게 공개키야. 공개키를 깃허브에 등록하면 git push나 git pull 할 때 계정 정보를 입력하지 않아도 돼. 내 PC에 있는 비공개키가 대신 인증해줄 거거든. 또, EC2의 .ssh/authorized_keys 파일에 내 공개키를 등록하면 별도의 추가 인증 없이 EC2에 ssh로 접속할 수 있어.

EC2를 처음 생성하면 pem 파일을 줄 텐데, 내 생각엔 이 안에 RSA 비공개키가 들어 있을 거라 확신해. EC2를 생성하면 .ssh/authorized_keys 파일에 기본적으로 한 개의 키가 등록되어 있는데, 여기에 등록된 공개키의 짝궁인 비공개키가 pem 파일에 포함되어 있다면 pem 파일을 통해 접속할 수 있는 구조가 되거든. 어쨋든 EC2를 만들고 내 공개키를 authorized_keys에 등록해 두면 번거롭게 putty를 설정하거나 pem을 매핑시켜줄 필요가 없어서 나는 다운로드 받지 않아.

리눅스에서 배포하기 위한 명령어를 쉘 스크립트 파일에 모아두고 그것만 실행하면 배포가 이루어지게 만들고 싶었던 적이 있었어. 쉘에는 대충 이런 내용이 들어갔지. "git pull" "npm install" "npm start" 그런데 원격 리포지토리가 private이어서 git pull할 때 비밀번호를 입력해야 해. 그때 방법을 찾다가 ssh로 연결하면 비밀번호를 입력하지 않아도 인증할 수 있다는 걸 알게 됐지.

 

아래는 추가될 내용의 후보들이야.

제발 git을 github라 부르지 마!

jwt의 장점은 상태가 없다는 거야.
refresh token을 탈취당하면 너무 위험한 거 아냐?
refresh token과 access token 쌍을 저장하면 돼!
jwt의 장점이 뭐라고?
상태가... 어...?

비밀번호를 어떻게 전송하고 어떻게 저장할까?

파일과 json을 동시에 보내려 해. 그러면 content type은 어떻게 되고 body는 어떻게 돼?