Você precisa usar sua chave privada, não sua chave pública, com o sinal -i
.
Como sua chave pública não pode passar o desafio enviado do outro servidor com base na mesma chave pública (criptografia assimétrica, exigindo que você use a chave privada para responder ao desafio baseado em chave pública), quando a autenticação de chave falhar ssh
prossegue para tentar outros métodos de autenticação, incluindo a senha.
A maneira como a criptografia assimétrica funciona é que sua chave privada é mantida privada. Ela não deve ser compartilhada com ninguém; ele não deve ser copiado do host no qual ele é criado. (E certamente não deve ser enviado por e-mail!)
A chave pública pode ser enviada para todo o lugar.
Os dados criptografados com a chave pública só podem ser descriptografados pela chave privada, e os dados criptografados pela chave privada só podem ser descriptografados pela chave pública.
Matematicamente, no algoritmo RSA, não há diferença funcional entre as duas chaves, exceto que uma delas deve ser mantida em segredo. No entanto, na implementação SSH real, as duas chaves são diferenciadas e parecem diferentes, por isso certifique-se de que:
- Sua chave pública e NÃO sua chave privada é adicionada ao arquivo "chaves autorizadas" no servidor de destino e
- Você passa sua chave privada para
ssh -i
. (Nenhum dano se você passar sua chave pública para-i
, simplesmente não funcionará.)
Se você já compartilhou sua chave particular ou copiou-a para o servidor de destino, gere uma nova chave e exclua a antiga.
Eu olhei mais de perto para exatamente quais etapas você realizou. Você precisa fazer o backup e começar de novo. Nesse ponto, você deve excluir o par de chaves de foouser
on target.host
e remover essa chave pública de QUALQUER arquivo de chaves autorizadas em que você colocou. Chaves particulares nunca devem ser copiadas.
Note que para SSH em [email protected] de someother.host NÃO requer que o foouser tenha um par de chaves.
O que é necessário é que você gere um par de chaves em someother.host para a contagem de usuários da qual você será o SSHing , e você coloca a chave pública desse par em ~foouser/.ssh/authorized_keys
on target.host
.
Simples passo a passo, mas omitindo as etapas de limpeza de segurança que você deve fazer agora desde que você copiou uma chave privada. Apenas a maneira simples de configurar a conectividade:
-
Em
startserver.host
, como usuáriostartinguser
, executessh-keygen
. Você pode fazer uma frase-senha ou não; você decide. (Uma frase secreta adiciona segurança adicional caso a chave privada seja comprometida.) Basta pressionar enter em cada prompt para criar o par de chaves com as configurações padrão, o que é bom. - Execute
cat ~/.ssh/id_rsa.pub
para exibir a chave pública . - Copie a saída do comando para o outro host (
target.host
) e anexe-a a~foouser/.ssh/authorized_keys
. - De
startserver.host
, executessh [email protected]
. Você não precisa do sinalizador-i
.
Para responder ao comentário:
If private keys should never be copied—can you explain what good is
ssh -i
when it expects a private key?
Você gera o par de chaves no host do qual deseja ssh
para outros servidores.
Sua chave privada permanece nesse servidor e nunca é copiada em outro lugar. (Talvez esteja nos seus backups. Talvez não. Mas para uso, nunca é copiado em outro lugar.)
A sua chave pública é copiada em todos os servidores aos quais você deseja acesso de login e, especificamente, é anexada ao arquivo authorized_keys
no diretório .ssh
no diretório inicial do usuário que você deseja conseguir fazer login como nesse servidor.
Com esta configuração (o padrão), você nunca precisará de -i
. No entanto, você pode ter mais de um par de chaves no seu próprio computador que você usa para diferentes propósitos (diferentes conjuntos de servidores). O ponto de -i
é poder especificar um local alternativo a partir do qual sua identidade de chave privada será lida. Você poderia obter o mesmo efeito com cd ~/.ssh; mv id_rsa id_rsa.bak; mv id_rsa.other id_rsa
e, em seguida, apenas ssh ...
sem -i
. Mas -i
é mais conveniente.