Secure Shell / 보안 쉘
원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜
암호화를 통해 강력한 보안을 제공하기 때문에 개방된 네트워크에서도 안전하게 통신 가능
기본포트 : 22
서버의 공개키를 클라이언트에게 전송
서버는 클라이언트로부터 SSH 접속 요청을 받고 자신의 공개키를 클라이언트에게 전송, 클라이언트는 서버로부터 받은 공개키를 로컬에 저장
클라이언트는 원격 접속하는 서버들의 공개키를 로컬 사용자 홈 디렉터리의 .ssh 경로 내의 known_hosts 파일에 저장
클라이언트와 서버는 여러 파라미터를 주고 받으며 보안 채널 확립
3-1) 서버인증
클라이언트는 난수를 하나 생성 후 이를 서버의 공개키로 암호화해서 서버에게 전송, 난수의 해시를 저장
서버는 전송받은 암호화된 난수를 서버 자신의 개인키로 복호화
복호화된 난수의 해시를 계산해서 클라이언트에게 전송
클라이언트는 전송받은 난수의 해시를 저장된 해시와 비교하여 서버 인증
3-2) 클라이언트 인증
서버는 난수를 하나 생성 후 이를 클라이언트의 공개키로 암호화해서 클라이언트에게 전송, 난수의 해시를 저장
클라이언트는 전송받은 암호화된 난수를 클라이언트 자신의 개인키로 복호화
복호화된 난수의 해시를 계산해 서버에게 전송
서버는 전송받은 난수의 해시를 저장된 해시와 비교하여 클라이언트 인증
세션키라고도 한다
클라이언트와 서버가 통신을 할 때 사용하는 public key와 private key
SSH는 대칭키를 통해 접속하려는 컴퓨터와 인증과정을 거친다.
서로 관계를 맻고 있는 키라는 것이 증명되면 두 컴퓨터 사이에 암호화된 채널이 형성되어 키를 활용해 메시지를 암호화하고 복호화하며 데이터를 주고받을 수 있게 된다.