1. 대칭키 (암호화,복호화의 기능을 포함한 하나의 키를 사용)
암호화, 복호화 할 때 사용하는 키가 동일한 경우, 1개의 키 사용
어떤 키로 암호화 했다면, 수신자도 같은 키가 있어야 복호화 가능
비밀키를 수신자 송신자쪽에서 둘다 사용하며 암호화 복호화가 하나의 키로 이뤄진다는 이미지
2. 비대칭키 (암호화,복호화의 기능을 분리한 두개의 키를 사용)
암호화 할 때 사용하는 키와 복호화할 때 사용하는 키가 다른 경우
2개의 키를 사용하며, 비밀키(개인키)와 비밀키를 토대로 만든 공개키가 쌍을 이룬 형태
공개키(public key): 사람들에게 공개된 키, 정보를 암호화 할 수 있다 (암호화)
비밀키(private key): 사용자만 알고 있는 암호를 풀 수 있는 키(복호화)
이후의 설명은 비대칭키를 사용한 깃허브의 경우에 대한 설명이 된다
※송신자가 깃허브, 수신자가 사용유저
공개키와 개인키
공개키 : 암호화만됨 (공유가능) *.puk
개인키 : 복호화만됨 (공유불가능) *.pem
그래서 깃허브는 비대칭키를 사용하며
클라이언트(유저)는 깃허브에 공개키를 등록할 필요가 있다
ssh사용시 아래의 순서가된다.
유저가 공개키와 개인키를 만든다
공개키를 깃허브에 등록한다
깃허브가 공개키로 임의의 문자열을 생성해서 해당 암호문을 사용자에게 전달 (평문을 공개키로 암호화후 해당 암호문을 유저에게 전달)
사용자가 전달받은 암호문을 개인키를 이용해서 해석하고 해당 결과(임의의 문자열)를 깃허브(서버)에 다시 전달 (비밀키로 암호문을 복호화후 해당 해석한 암호문의 결과를 서버에게 전달)
전달받은 값을 깃허브(서버)에서 처음 보낸 임의의 문자열과 일치하는지 확인한다
전달받은 값이 올바르다면 사용자에게 ssh쉘 사용을 허가한다
깃허브에 SSH등록
깃허브에서 공개키와 개인키를 사용하는 가장 대표적인 예시는 SSH 연결입니다. SSH(secure shell)는 원격 서버에 안전하게 로그인하고 작업을 수행하는 프로토콜입니다.
SSH를 사용하면 클라이언트 컴퓨터에서 개인키를 사용하여 서버에 로그인할 수 있습니다. 이때 서버에는 해당 공개키가 등록되어 있어야 합니다.
ssh-keygen // .ssh 폴더에 공개키와 개인키를 만든다
공개키를 깃허브에 등록한다
ssh -T git@github.com 명령어 실행후 결과 확인
.pem과 .ppk차이
PEM은 주로 UNIX 기반 시스템에서 사용되며 OpenSSL과 같은 도구를 사용하여 생성 및 관리됩니다. (일반적으로 이걸 사용)
PPK는 주로 Windows 환경에서 PuTTY와 함께 사용되며 PuTTYGen과 같은 도구로 생성됩니다. (putty에서 사용함)
EC2의 SSH접속
1.EC2의 키패어(개인키)를 다운로드한다 (리눅스용으로 .pem형식)
2. 보안그룹에서 ssh의 22번 포트의 인바운드 트래픽을 열어준다
3. 개인키의 권한 변경
chmod 0400 EC2TutorialKey.pem
3.다운로드받은 개인키로 아래와 같이 입력
- 개인키명에 공백이 없어야함
- ec2-user가 ec2의 기본유저이다
- ec2의 퍼블릭IP는 인스턴스 재시동시 변경된다
ssh -i 개인키명.pem EC2의리눅스유저명@EC2의PublicIP
ssh -i EC2TutorialKey.pem ec2-user@42.101.0.193
참조
https://library.gabia.com/contents/infrahosting/9002/
https://spidyweb.tistory.com/310
https://velog.io/@cchloe2311/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9-%EB%8C%80%EC%B9%AD%ED%82%A4-%EB%B9%84%EB%8C%80%EC%B9%AD%ED%82%A4