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@ip
user@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
)을 통해 마운트된 경우 해당 프로토콜의 보안에 의존합니다. 인증서는 다음과 같이 다릅니다.