.ssh

김석·2023년 5월 25일
0

Linux

목록 보기
8/12

1. SSH란

Secure Shell. 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜.

  • 원격 접속 보안을 위한 필수적인 요소.
  • Cloud 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근하고 사용.
  • 따라서 서버 생성시 필수적으로 SSH 보안 과정을 거친다.

2. 작동 원리

2-1. SSH 클라이언트(사용자)

  • ssh-keygen 명령어를 사용하여 공개키와 개인키 생성.
  • 개인키: ~/.ssh/id_rsa
  • 공개키: ~/.ssh/id_rsa.pub
  • 공개키는 서버에 접속하기 위해 서버의 ~/.ssh/authorized_keys 파일에 등록되어야 함.
// authorized_keys 예시
ssh-rsa [클라이언트 공개키] [클라이언트 이름]@[클라이언트 시스템 호스트 이름]
  • ssh-rsa를 통해 만들어진 공개키이고, [클라이언트 이름]@[클라이언트 시스템 호스트 이름] 부분은 주석일 뿐이라 기능에 영향을 미치지 않지만, 키 관리를 더 쉽게 하기 위해 주석을 포함하는 것이 좋다.

2-2. SSH 서버 (호스트)

  • 서버에도 서버의 공개키, 개인키가 존재한다.
  • 개인키: /etc/ssh/ssh_host_rsa_key
  • 공개키: /etc/ssh/ssh_host_rsa_key.pub
  • 클라이언트가 서버에 처음 연결 시도 시, 해당 공개키를 클라이언트에게 제공한다. 클라이언트는 ~/.ssh/known_hosts 파일에 접속을 시도한 서버의 공개키를 저장함.
  • known_hosts가 필요한 이유는 MitM(Man-in-the-Middle) 공격으로부터 보호하기 위함.
  • MitM 공격이란 공격자가 사용자를 속여 중요한 정보를 공개하도록 시도하기 위해 서버에 대한 연결을 가로채고 서버인 것처럼 가장하는 것.
  • 서버가 제시한 공개키가 known_hosts 파일의 키와 일치하지 않으면 클라이언트는 연결을 거부할 수 있음.
  • 일치하는 경우 클라이언트는 처음 연결한 동일한 서버에 연결하고 있음을 확신할 수 있다.
  • 클라이언트가 해당 서버에 접속하기 위해서는 클라이언트의 공개키가 서버의 ~/.ssh/authorized_keys에 저장되어야 함.

3. 정리

3-1. 클라이언트 ~/.ssh

  • id_rsa: 개인키
  • id_rsa.pub: 공개키
  • known_hosts: 이전에 접속한 SSH 서버들의 공개키 목록

3-2. 서버 ~/.ssh

  • authorized_keys: 접속을 허용할 SSH 클라이언트들의 공개키 목록

3-3. 서버 /etc/ssh

  • 서버의 공개키와 개인키가 있다.

출처

https://spidyweb.tistory.com/310
https://library.gabia.com/contents/infrahosting/9002/
https://library.gabia.com/contents/9008/
https://gwonbookcase.tistory.com/56

profile
handsome

0개의 댓글