SSH는 암호화된 원격 접속 프로토콜이다.
가장 기본적인 방법은 패스워드를 사용하여 접속하는것이다.
위 방법 물론 암호화되어 서버로 보내지지만
반복적인 해커의 공격에 안전하지 않다.
패스워드가 복잡하지 않고 짧은 경우에는 더욱 그렇다.
SSH key 는 가장 안정적이면서 검증된 인증방식이다
클라이언트가 가지는 Private 키는 절대 타인에게 공개되면 안된다.
이유는 Private 키가 있다면 서버에 아무 인증 없이 접속이 가능하기 때문이다.
물론 예방조치로 Private 키를 passphrase 로 암호화 하여 디스크에 저장도 가능하다
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
전체적인 흐름이다 ( 위 전체적인 흐름은 https://arsviator.blogspot.com/2015/04/ssh-ssh-key.html 에서 가져왔다)
1. 클라이언트가 서버에 SSH 연결을 요청한다.
2. 서버는 랜덤 챌린지(랜덤 데이터 스트링)를 생성해 클라이언트에게 보낸다.
3. 클라이언트는 서버로 부터 받은 챌린지(C)를 자신이 가지고 있는 private 키로 암호화해서 암호화 된 메시지를 서버로 보낸다.
4. 서버는 클라이언트에서 받은 암호화 된 메시지를 public 키로 해석한 후 그 결과를 2단계에서 자신이 클라이언트에게 보낸 랜덤 챌린지와 일치하는지 확인한다. (public 키로 해석할 수 있는 메시지는 그 쌍이 되는 private 키를 가진 사람만이 만들 수 있기 때문) 일치하면 클라이언트가 인증된 것이다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
서버가 SSH 키 인증을 사용하도록 설정하려면 가장 먼저 클라이언트에서 키 페어를 생성해야한다
1) Private Key (Private Key는 SSH로 접속하고자 하는 Client에 존재)
2) Public Key (Public Key는 Server에 존재)
SSH 키를 생성하기 위해서는 OpenSSH에 포함되어 있는 ssh-keygen 유틸리티를 사용한다
위 사진에서 passphrase를 물어보는데 Passphrase는 옵션으로 private 키를 디스크에 저장할 때 암호화 하는데 사용된다.
현재 포스터에서는 사용을 하지 않기때문에 모두 Enter 를 눌러주었다.
(Unix 계열 기준, 윈도우는 별도의 프로그램 설치 필요)
id_rsa : Private Key file [Client]
id_rsa.pub : Public Key file. [Server ~/.ssh/authorized_keys 로 저장]
접속할 서버에 id_rsa.pub 파일을 서버에 scp 로 업로드 후 업로드가 완료되면 Client 에 known_hosts 가 생긴다.
접속할 서버에 id_rsa.pub 파일의 내용을 .ssh안에 authorized_keys 의 이름으로 복사한다.
password 없이 접속 확인
'👨🏻💻Infra > 🐧Linux' 카테고리의 다른 글
Linux dd 명령어 (0) | 2020.05.11 |
---|---|
APM configure 옵션 확인 (0) | 2020.05.08 |
[Linux] 대기상태 D(uninterruptible sleep) PID 죽이기 (0) | 2020.04.01 |
[Linux] 깃허브란 (0) | 2020.03.31 |
[Linux] http -> https 주소 리다이렉트 시키기 (0) | 2020.03.27 |