Git SSH

wonsik·2021년 9월 23일
1

Git

목록 보기
1/2

SSH란...

repository를 clone 받을 때 등장, 배포용으로 생성한 AWS서버에 연결할 때 등장

SSH란 Secure Shell의 줄임말로, 두 컴퓨터 간 통신을 할 수 있게 해주는 하나의 protocaol

Protocal 이란, 서로 다른 통신 장비 간 주고 받는 데이터의 양식과 규칙

인터넷만 연결 되어있어도 내 컴퓨터의 terminal을 통해 다른 지역에 있는 컴퓨터 혹은 서버를 관리하고 파일을 공유할 수 있다.

예시로는 HTTP, HTTPS, FTP 등이 있다.

다른 컴퓨터들이 shell을 통해 통신하기 위해 SSH라는 protocal을 사용함.

장점: 암호화된 통신
HTTPS에서 통신 간 데이터가 암호화 되어 있는 것과 같이, SSH를 이용한 통신에서는 Client와 Host의 통신이
암호화 되어있다.

Client: Host에 접속하려고 하는 컴퓨터
Host: 접속 대상 (ex. remote 서버)

모든 데이터가 암호화 되어 전송 

SSH의 Encryption/Decryption
SSH 통신에서 데이터가 암호화되는 과정에는 크게 3가지 스텝이 존재함
대칭 암호화(Symmetric Encryption)
1개의 공통된 Secret Key를 가지고 양쪽에서 데이터를 암호화 및 복호화 할 수 있음
암호화 복호화 시에 동일 키를 사용
편하지만 유출이 되면 모든 통신이 노출된다.
비대칭 암호화(Asymmetric Encryption)
안전하게 Key를 exchange
송신자, 수신자 각각 Public Key와 Private Key를 가진다. 송신자의 Public Key로 암호화 된 데이터는
수신자의 Private Key를 사용해야만 복호화가 가능.
해쉬함수(Hashing)
중간에 정보를 조작할 가능성도 있다. 이를 방지하기 위해 MAC(Message Authentication Code)을 통한
데이터 무결성을 (송신자가 보낸 메세지가 변조되지 않았는지) 확인하는 절차가 존재

Authentication

이렇게 송/수신자 간 안전한 connection이 열리게 되면, 접속을 시도하는 user가 접속 권한이 있는 사람인지 확인
Password(username/password -- username은 보통 root)
Brute-force Attack에 취약(무작위적 대입)
RSA(password 없이 identity 확인)
내 컴퓨터에 SSH 키를 생성하여 나의 Public key를 host의 인가 목록에 추가해 자동으로 나를 인증

profile
새로운 기술을 배우는 것을 좋아하는 엔지니어입니다!

0개의 댓글