공개/개인 키를 사용하여 로그인하는 것과 SSH에서 인증서를 사용하는 것의 차이점

공개/개인 키를 사용하여 로그인하는 것과 SSH에서 인증서를 사용하는 것의 차이점

SSH 연결을 설정하는 데 사용하는 두 프로세스 간의 차이점을 확인하려고 합니다.

첫 번째 명령 시퀀스에서는 다음을 수행합니다.

ssh-keygen -t rsa
ssh-copy-id user@ip
ssh user@ip

나는 이것이 서버의 공개/개인 키 인증에 해당한다고 생각합니다. 이 부분은 중간자 공격에 취약하다고 생각합니다.

다른 순서는 다음과 같습니다.

ssh-keygen -t rsa 
cat /home/login_server/.ssh/id_rsa.pub >> /home/login_server/.ssh/authorized_keys
ssh -i ~/.ssh/id_rsa user@ip -o VisualHostKey=yes

두 번째 명령은 본질적으로 ssh-copy-id 명령이 수행하는 작업이라고 생각합니다. 그러나 -i 옵션은 이전에 수행하지 않은 개인 키를 찾을 수 있는 위치를 알려줍니다. 이것이 위의 인증된 버전이라고 가정할 수 있습니까?

답변1

사용한 두 가지 방법은 유사하며 동일한 인증 메커니즘을 사용합니다. 구체적인 차이점은 다음과 같습니다.

  • ssh-copy-id user@ipuser@ip대상 시스템 에 아직 인증되지 않은 로컬 키를 복사하는 반면, cat명령은 방금 생성한 키만 복사합니다.
  • ssh user@ip사용 가능한 모든 인증 키가 시도되고 ssh -i ...지정된 키만 사용됩니다.

MITM 문제는 자신의 키가 아닌 호스트 키와 관련이 있습니다. VisualHostKey(우리 인간의 경우) 비교가 더 쉽기 때문에 도움이 됩니다 . 그러나 이는 다양한 인증 메커니즘과는 아무런 관련이 없습니다.

이제 SSH도 인증서를 지원하지만 인증서는 다릅니다. 기본적으로 각 서버에 인증된 모든 키를 나열하는 대신 특정 인증 기관에서 서명한 키를 허용하도록 서버를 구성합니다.

답변2

나는 이것이 서버의 공개/개인 키 인증에 해당한다고 생각합니다.

이는 하나의 비밀번호 인증과 하나의 공개 키 인증을 수행합니다.

이 부분은 중간자 공격에 취약하다고 생각합니다.

호스트 키가 올바르게 확인되면 MitM 공격에 취약하지 않습니다.

두 번째 명령은 본질적으로 ssh-copy-id 명령이 수행하는 작업이라고 생각합니다.

예, 하지만 ssh-copy-id권한과 selinux 컨텍스트가 올바른지 확인하기 위한 추가 검사가 있습니다. 또한 네트워크를 통해 password인증을 사용하여 이 작업을 수행합니다.

그러나 -i 옵션은 이전에 수행하지 않은 개인 키를 찾을 수 있는 위치를 알려줍니다.

예. 그러나 이것이 /home/login_server/.ssh/id_rsa기본값입니다.

이것이 위의 인증된 버전이라고 가정할 수 있습니까?

아니요, 파일을 복사하는 것뿐입니다. 홈 디렉토리가 다른 방법(NFS, Samba 또는 기타 sshfs)을 통해 마운트된 경우 해당 프로토콜의 보안에 의존합니다. 인증서는 다음과 같이 다릅니다.

https://ef.gy/hardening-ssh

관련 정보