공개키 암호화
- 공개되어 있는 키를 이용하여 암호화 하는 방식
- 공개키 암호화에 사용되는 키는 공개되어 있는 공개키(Public key), 자신만이 소유하고 있는 개인키(Private key)가 있다.
- 두개의 키중 공개키는 암호화에 사용되고 개인키는 복호화에 사용된다.
- client와 server가 있다. 클라이언트는 서버에 접속을 요청 한다.
- 서버와 클라이언트 모두가 지원하는 암호 알고리즘을 선택해 키 교환을 준비한다.
- Diffi-Hellman 알고리즘을 통해 세션 암호화에 필요한 공유키를 생성한다.
- 서버는 클라이언트에게 공개키를 전송한다.
- 클라이언트에 서버 공개키가 kown_hosts에 없다면 등록할 것인지 유저에게 확인하고 등록한다.
- 그 후 메세지를 서버의 공개키로 암호화하여 서버에게 전송하고 서버는 자신만이 가지고 있는 개인키로 메세지를 복호화한다.
- 그 후 원본 메세지를 클라이언트에게 전달하고 클라이언트는 메세지를 검증하고 일치한다면 클라이언트의 공개키를 다시 서버에게 전송한다.
- 서버는 authorized_keys에 클라이언트의 공개키가 있는지 확인하고 없다면 패스워드를 입력하고 있다면 메세지를 클라이언트의 공개키로 암호화하여 클라이언트에게 전송한다.
- 클라이언트는 이제 자신만 가지고 있는 개인키로 메세지를 복호화하고 원본 메세지를 서버에게 전달, 서버는 메세지를 검증하고 일치한다면 클라이언트와 서버가 안전하게 SSH세션을 시작한다.
Client
- ssh-keygen 명령어를 통해 공개키와 개인키 생성
mykey.pem(개인키) mykey.pem.pub(공개키)
- 서버 authorized_keys에 공개키를 등록해준다.
- known_hosts - 클라이언트가 서버에 로그인할때 처음 연결하게되면 서버 공개키가 해당 파일에 기록된다.
showmount -e IP
mount -t nfs IP:/서버 파일명 /클라이언트 파일명
ssh -i 개인키 ec2-user@ip