Secure Shell 물어보기 전에 내가 확인할 것을 확인했나?
ACL 및 포트 확인 필수
3줄요약
telnet은 평문으로 통신하는 반면에
SSH는 암호화 통신을 지원함
안전한 서버와의 통신을 지원함
긴 설명
3줄 요약과 같음
호스트 인증
서버에 접속하면 그 때마다 호스트 인증을 수행함
먼저 서버 고유의 호스트 키(공개 키)를 서버로부터 클라이언트로 전달
클라이언트 쪽에서 저장하고 있는 호스트 키( known_hosts )와 비교해 일치 여부 확인
하지만 처음 접속할 때는 연결할 서버의 호스트 키를 가지고 있지 않기 때문에 키를 비교하지는 않는다
대신 대상 호스트가 등록되어 있지 않다는 메시지 표기함
fingerprint 를 등록하면 서버의 호스트 키가 ~/.ssh/known_hosts 파일에 등록(클라이언트)됨
사전에 서버 관리자에게 핑거 프린트를 받고 처음 접속할 때 확인하는 것이 정석!! -> 하지만 아무도 안함
다음 번 접속 시 부터는 fingerprint 표시가 나오지 않음
호스트의 공개키가 known_hosts 파일에 저장된 값과 다르면 메시지가 표시되고 강제로 접속이 끊어짐
OpenSSH 를 설치하면 /etc/ssh 디렉터리 밑에 호스트의 공개 키와 비밀 키가 만들어짐
호스트 인증에 사용될 것이기 떄문에 외부 유출 방지해야함
서버 호스트 키의 핑거 프린트를 확인하려면 ssh-keygen 명령에 -l 옵션을 붙임
-> 서버 운영자는 서버를 접속하려는 클라이언트에게 핑거 프린트를 제공함으로써 클라이언트가 정상적인 서버 접속을 시도하는지 알 수 있음
사용자 인증
호스트 인증이 끝나면 사용자 인증 수행
기본적으로 공개키 인증 -> 패스워드 인증 순으로 진행됨
공개 키 인증에서는 통신하는 호스트 간에 하나의 공개 키와 비밀 키 쌍을 사용해 인증함
공개 키 인증을 하려면 미리 클라이언트의 공개 키를 서버에 등록해야함
-> 즉, 나의 키가 접속하려는 서버에 등록되어 있어야 함
공개키 인증 순서
서버에 공개 키 등록
접속 시 사용자의 키가 사용가능한지 체크섬을 사용자 쪽에서 공개 키와 사용자 명으로부터 만들어진 데이터 전자 서명
위의 데이터와 전자 서명이 서버로 전송
서버 쪽에서 데이터와 서명 검증
검증에 성공하면 로그인 허용
공개 키 인증 준비가 되지 않았을 때, 패스워드 인증이 허용되어 있으면 패스워드 인증이 이루어짐
대상 서버에 등록된 패스워드를 올바르게 입력하면 로그인 가능
공개 키 생성
공개 키와 비밀 키의 키 쌍을 만드려면 ssh-keygen 명령을 사용함
대부분 rsa 사용해서 생성함
이렇게 작성한 키 중 공개키를 대상 서버에 등록한다.(접속하고 싶은 서버)
~/.ssh/authorized_keys 파일에 추가하면 됨
ssh-copy-id 커맨드를 통해 등록할 수도 있음
'귀찮게하기 > Infra' 카테고리의 다른 글
인프라팀 귀찮게 안하기 - Network(4) (1) | 2024.11.06 |
---|---|
인프라팀 귀찮게 안하기 - LoadBalancer 및 세션 유지 (0) | 2024.11.06 |
인프라팀 귀찮게 안하기 - Network(3) (0) | 2024.11.06 |
인프라팀 귀찮게 안하기 - Network(2) (4) | 2024.11.04 |
인프라팀 귀찮게 안하기 - Network(1) (0) | 2024.11.04 |