A mensagem que você está vendo é um problema separado. Ele está pedindo para você confirmar que o host ao qual você está se conectando é realmente o 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, verifique se as impressões digitais correspondem.
As chaves do host, vistas em ação aqui, abordam o problema dos ataques intermediários - talvez o DNS tenha sido subvertido e você esteja se conectando à máquina de um concorrente, e não à sua. Essa máquina reúne suas credenciais e encaminha de forma transparente sua conexão com o servidor real, roubando suas informações sem que você saiba. Garantir que a chave do host corresponda impede que isso aconteça, a menos que o invasor tenha realmente roubado a chave pública do servidor.
Um problema permanece: como você sabe qual chave está certa? Após a primeira conexão, a chave pública é armazenada no seu ~/.ssh/known_hosts
arquivo, para que as conexões subsequentes sejam boas. Mas, na primeira vez, você precisa de uma maneira fora de banda para obter a impressão digital, ou então segue o modelo "TOFU": confiança no primeiro uso.
Mas nada disso tem a ver com senhas x chaves, exceto que chaves e senhas podem ser roubadas por esse ataque - em certo sentido, é a vulnerabilidade que você está solicitando.
Há (pelo menos) três razões pelas quais as senhas são piores que as chaves:
- Eles podem ser brutais. Uma senha típica de 8 caracteres selecionada pelo usuário possui cerca de 30 bits de adivinhação-entropia. Um par de chaves pública / privada ssh é 1024 bits ou maior. É efetivamente impossível forçar uma chave ssh com força bruta, mas a adivinhação automática de senha 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 locais. Obviamente, isso facilita os ataques.
- As senhas podem ser roubadas remotamente. Quando você usa o SSH, a senha é criptografada na conexão, mas é muito comum o servidor ssh ser substituído em sistemas comprometidos por um que registre todas as senhas. Com as chaves, a chave privada permanece no sistema local e nunca é enviada e, portanto, não pode ser roubada sem comprometer a máquina do cliente.
Além disso, as chaves ssh oferecem comodidade quando usadas com algo como ssh-agent
- você obtém a operação sem complicações de conectar-se sem se autenticar cada vez, mantendo um grau razoável de segurança.
Não há vantagem significativa em solicitar os dois, pois alguém que tem acesso suficiente para roubar a chave privada também pode roubar facilmente a senha do usuário. Se você precisar de mais segurança do que isso, considere procurar um sistema de autenticação de dois fatores como o RSA SecurID ou o WiKID .