보고있는 메시지는 별도의 문제입니다. 연결하려는 호스트가 실제로 예상되는 호스트인지 확인하라는 메시지가 표시됩니다. 서버에서을 실행하여 지문을 얻을 수 있습니다 ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. 그런 다음 처음으로 원격으로 연결할 때 지문이 일치하는지 확인할 수 있습니다.
여기에서 실제로 볼 수있는 호스트 키 는 중간 공격 에서 사람 의 문제를 해결합니다. 아마도 DNS가 전복되었을 수도 있고 자신의 컴퓨터 대신 경쟁사의 컴퓨터에 연결하고있을 것입니다. 해당 시스템은 자격 증명을 수집하고 연결을 실제 서버에 투명하게 전달하여 사용자 모르게 정보를 훔칩니다. 호스트 키가 일치하는지 확인하면 공격자가 실제로 서버의 공개 키를 도난하지 않는 한이 문제가 발생하지 않습니다.
그래도 문제가 남아 있습니다. 어떤 키가 옳은지 어떻게 알 수 있습니까? 첫 번째 연결 후 공개 키가 ~/.ssh/known_hosts
파일에 저장 되므로 후속 연결에 문제가 없습니다. 그러나 처음에는 지문을 얻는 대역 외 방법이 필요하거나 "TOFU"모델, 즉 처음 사용시 신뢰를 따르는 방법이 필요합니다.
그러나이 공격을 통해 키와 암호를 모두 도난 당할 수 있다는 점을 제외하고는 암호와 키와는 아무런 관련이 없습니다. 어떤 의미에서, 그것은 당신이 요구하는 취약점입니다.
암호가 키보다 나쁜 이유는 세 가지가 있습니다.
- 그들은 무차별적일 수 있습니다. 일반적으로 사용자가 선택한 8 자 암호에는 약 30 비트의 추측 엔트로피가 있습니다. ssh 공개 / 개인 키 쌍은 1024 비트 이상입니다. ssh 키를 무차별 공격하는 것은 사실상 불가능하지만 자동 암호 추측은 항상 발생합니다.
- 그들은 바보 일 수 있습니다. 사용자는 제한이있는 경우에도 일상적으로 끔찍한 암호를 선택하며 여러 곳에서 더 단단한 암호를 사용하는 경향이 있습니다. 이것은 분명히 공격을 더 쉽게 만듭니다.
- 비밀번호를 원격으로 도난 당할 수 있습니다. SSH를 사용하는 경우 비밀번호는 유선으로 암호화되지만 손상된 시스템에서 ssh 서버를 모든 비밀번호를 기록하는 것으로 대체하는 것이 일반적입니다. 키를 사용하면 개인 키가 로컬 시스템에 유지되며 전혀 전송되지 않으므로 실제로 클라이언트 시스템을 손상시키지 않으면 도난 당할 수 없습니다.
또한 ssh 키는 다음과 같은 용도로 편리 성을 제공 ssh-agent
합니다. 매번 다시 인증하지 않고도 연결을 번거 로움없이 운영하면서 합리적인 수준의 보안을 유지합니다.
개인 키를 훔치기에 충분한 액세스 권한을 가진 사람이 사용자의 암호를 상당히 쉽게 훔칠 수 있기 때문에 두 가지 모두를 요구할 때 큰 이점은 없습니다. 이보다 더 많은 보안이 필요한 경우 RSA SecurID 또는 WiKID 와 같은 2 단계 인증 시스템을 고려하십시오 .