Você está misturando a autenticação da máquina do servidor com a máquina cliente e a autenticação do usuário na máquina do servidor.
Autenticação do servidor
Uma das primeiras coisas que acontecem quando a conexão SSH está sendo estabelecida é que o servidor envia sua chave pública para o cliente e prova (graças a criptografia de chave pública ) para o cliente que conhece a chave privada associada. Isto autentica o servidor: se esta parte do protocolo for bem sucedida, o cliente sabe que o servidor é quem finge que é.
O cliente pode verificar se o servidor é conhecido, e não algum servidor desonesto tentando passar como o caminho certo. O SSH fornece apenas um mecanismo simples para verificar a legitimidade do servidor: ele lembra os servidores aos quais você já se conectou, no arquivo ~/.ssh/known_hosts
da máquina cliente (há também um arquivo de todo o sistema /etc/ssh/known_hosts
). A primeira vez que você se conecta a um servidor, você precisa verificar, por algum outro meio, se a chave pública apresentada pelo servidor é realmente a chave pública do servidor ao qual você deseja se conectar. Se você tiver a chave pública do servidor que está prestes a se conectar, poderá adicioná-la ao ~/.ssh/known_hosts
no cliente manualmente.
Autenticar o servidor tem que ser feito antes de você enviar qualquer dado confidencial para ele. Em particular, se a autenticação do usuário envolve uma senha, a senha não deve ser enviada para um servidor não autenticado.
Autenticação do usuário
O servidor só permite que um usuário remoto efetue login se esse usuário puder provar que tem o direito de acessar essa conta. Dependendo da configuração do servidor e da escolha do usuário, o usuário pode apresentar uma das várias formas de credenciais (a lista abaixo não é completa).
- O usuário pode apresentar a senha da conta na qual ele está tentando efetuar login; o servidor então verifica se a senha está correta.
- O usuário pode apresentar uma chave pública e provar que possui a chave privada associada a essa chave pública. Esse é exatamente o mesmo método usado para autenticar o servidor, mas agora o usuário está tentando provar sua identidade e o servidor está verificando-as. A tentativa de login é aceita se o usuário provar que sabe que a chave privada e a chave pública estão na lista de autorizações da conta (
~/.ssh/authorized_keys
no servidor). - Outro tipo de método envolve a delegação de parte do trabalho de autenticação do usuário para a máquina cliente. Isso acontece em ambientes controlados, como empresas, quando muitas máquinas compartilham as mesmas contas. O servidor autentica a máquina cliente pelo mesmo mecanismo que é usado ao contrário e, em seguida, confia no cliente para autenticar o usuário.