Na minha experiência, os dois erros de autenticação mais comuns baseados em chaves são
- Permissões inadequadamente amplas no diretório
$HOME/.ssh
- Um erro ao copiar a chave pública para o sistema remoto
Permissões de arquivo
OpenSSH faz muito em uma tentativa de protegê-lo de si mesmo. A maneira mais impactante de usar isso é impor restrições rígidas sobre quem tem acesso à pasta ssh local. Você realmente só quer que você, e somente você, acesse o diretório. Bem, e qualquer pessoa com uid = 0, mas não há maneira de contornar isso. Então, o que você precisa fazer é simplesmente alterar suas permissões: chmod -R go-rwx ~/.ssh
Isso removerá os direitos de leitura, gravação e execução de quaisquer arquivos sob o diretório .ssh de todos os usuários, exceto o proprietário, ou seja, você .
Problemas com chaves autorizados
O arquivo que contém sua chave pública, normalmente $HOME/.ssh/authorized_keys
, precisa caber em um formulário muito específico para o SSH entender como aceitar a chave privada. Cada chave deve consistir em, pelo menos, 2 campos
- Tipo de chave usada (RSA, DSA, RSA1, etc)
- Chave
Cada chave, juntamente com todas as suas opções e componentes, deve ser listada uma por linha neste arquivo. Uma vez que as teclas tendem a ser muito longas, elas geralmente são quebradas e aparecem como duas linhas em seu terminal. Isso às vezes causará estragos ao tentar copiar / colar, já que às vezes uma ou mais linhas novas serão inseridas sempre que a chave for envolvida na tela. Corrigir este problema pode ser um pouco mais complicado para um iniciante do shell.
Tente executar wc -l ~/.ssh/authorized_keys
Isso imprimirá o número de linhas no arquivo. Compare esse número com o número de chaves que você espera estar no arquivo. Se você aceitar apenas esta chave, também poderá fazer uma cópia do arquivo de chave pública, pois é o mesmo formato do arquivo de chaves autorizadas. Algo parecido com scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
ou, se você tiver sua chave pública no mesmo sistema, você pode fazer cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys
Além disso, procure no arquivo de log no host remoto e veja se algum erro está sendo relatado lá. Os arquivos provavelmente serão /var/log/secure.log
ou /var/log/auth
.