A mensagem que você está vendo é um problema separado. Ele está pedindo para você confirmar se o host ao qual você está se conectando é realmente aquele que você espera que seja. No servidor, você pode obter a impressão digital executando ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Então, quando você estiver se conectando remotamente pela primeira vez, pode ter certeza de que as impressões digitais coincidem.
As chaves do host, vistas em ação aqui, solucionam o problema dos ataques homem no meio - talvez o DNS tenha sido subvertido e você esteja se conectando à máquina de um concorrente em vez de ao seu. Essa máquina reúne suas credenciais e encaminha sua conexão para o servidor real de forma transparente, roubando suas informações sem que você saiba. Certificar-se de que a chave do host corresponda evita que isso aconteça, a menos que o invasor realmente tenha roubado a chave pública do servidor.
Um problema permanece, porém - como você sabe qual chave está certa? Após a primeira conexão, a chave pública é armazenada no arquivo ~/.ssh/known_hosts
, portanto as conexões subseqüentes são adequadas. Mas na primeira vez, você precisa de alguma maneira fora de banda para obter a impressão digital, ou então você segue o modelo "TOFU": confiança no primeiro uso.
Mas nada disso tem a ver com senhas versus chaves, exceto pelo fato de que ambas as chaves e senhas podem ser roubadas por meio desse ataque - em certo sentido, é a vulnerabilidade que você está pedindo.
Há (pelo menos) três razões pelas quais as senhas são piores que as chaves:
- Eles podem ser forçados a brutalidade. Uma típica senha de 8 caracteres selecionada pelo usuário tem cerca de 30 bits de entropia de adivinhação. Um par de chaves pública / privada ssh é de 1024 bits ou maior. É efetivamente impossível forçar brutalmente uma chave ssh, mas a adivinhação automatizada de senhas acontece o tempo todo.
- Eles podem ser burros. Os usuários selecionam rotineiramente senhas horríveis, mesmo com restrições, e tendem a usar senhas mais difíceis em vários lugares. Isso obviamente torna os ataques mais fáceis.
- As senhas podem ser roubadas remotamente. Quando você está usando o SSH, a senha é criptografada na conexão, mas é muito comum que o servidor ssh seja substituído em sistemas comprometidos por um que registre todas as senhas. Com as chaves, a chave privada fica no sistema local e nunca é enviada, portanto, não pode ser roubada sem comprometer a máquina do cliente.
Além disso, as chaves ssh oferecem conveniência quando usadas com algo como ssh-agent
- você obtém a operação sem problemas de conectar-se sem re-autenticar a cada vez, mantendo um grau razoável de segurança.
Não há vantagem significativa em pedir os dois, já que alguém com acesso suficiente para roubar a chave privada pode facilmente roubar a senha do usuário. Se você precisar de mais segurança do que isso, considere pesquisar um sistema de autenticação de dois fatores, como RSA SecurID ou WiKID .