본문 바로가기

클라우드/앤서블(Ansible)

SSH known_hosts 파일

 

known_hosts 파일

 

ssh 접속

ECDSA 암호화 알고리즘 / fingerprint 지문(서명)

SHA256 방식으로 했을 때 이 지문이 맞는가? SHA256: 서버의 공개키 지문

패스워드 인증방식이 no로 설정되어 있기 때문에 Permission denied 로 접속이 되지 않는다

 /etc/ssh/sshd_config 파일 수정을 해준다

 

 /etc/ssh/ssh_config 클라이언트 설정파일

 /etc/ssh/sshd_config 서버 설정파일

 

PasswordAuthentication no -> yes

모든 시스템에 패스워드 인증을 활성화

 

 

ssh 재시작

 

 

ssh  [Account(사용자명)@]  IP/hostname

ssh  -l  [Account(사용자명)]  IP/hostname

사용자를 지정하지 않고 ssh로 로그인 할 경우

지금 시스템을 사용하고있는 사용자 (현재 로그인 된 사용자) 로 로그인 된다

사용자를 지정하고 로그인 했을 때 서버에 그 사용자가 없다면 로그인 되지 않는다

=똑같은 계정이 없으면 사용자로 지정하지 않고 로그인하는것은 불가능 하다

 

 

서버의 공개 키 지문이 맞는지 비교를 해야한다

비교를 하지 않고 yes를 하면 mitm( man in the middle) 공격을 당할 수 있다

 

ssh는 pki를 사용하지 않기 때문에 내가 접속하려는 대상의 시스템의 공개키를 검증할 수 있는 매커니즘이 없어서 사용자가 직접 검증해야한다

처음 접속할 때  fingerprint가 이상없음을 확인해 yes 를 하면 서버의 공개키를  known_hosts 목록에 추가한다. 두번째부터는  공개키가 known_hosts에 있는 확인하고 지문을 묻지 않는다

 

서버측에서는 네가지 알고리즘을 지원한다. 선택하여 사용하능하지만, 주로 ecdsa 라는 알고리즘이 기본 알고리즘을 사용한다.

공개키 형식 : [암호화 방식]  [public key]  [key를 만든 사람]

이것을 hash를 뜬것이 지문 (sha256)

 

ssh-keygen -l -f 공개키 ( -l list -f file)

공개키를 지정했을 때 지문을 확인 할 수 있다.

이 지문과 접속을했을때의 지문이 같으면 문제가 없다.

 

 


 

ssh-keyscan

 

퍼블릭 클라우드에서 인스턴스를 생성 할 때, 만들어져있는 VM이 아니기 때문에 해당되는 VM의 공개키를 미리 알 수 없다.

ssh-keyscan이라는 명령어를 사용하여 공개키를 알 수 있다.

known_hosts 파일을 생성하고 검증하기 위한 목적

 

리다이렉션을 이용하여 파일 만들기

 

지문 확인

 

 


 

 key-scan 이용법

 

눈으로 직접 검증하는것이 아니라 이 파일을 known_hosts에 저장하여 시스템이 검증

 

-t 암호화 타입 지정

원하는 타입만 지정하여 known_hosts에 저장

 

known_hosts에 키가 있기 때문에 지문을 묻지 않는다.

 

 


host key checking 비활성화

 

모든 호스트에 대해 Key 확인을 하지 않는다.

 

 


 

인코딩

 

인코딩 유무를  /etc/ssh/ssh_config 에서 변경할 수 있다