Configuração do Cliente
Configuração ~/.ssh/config
A configuração de entradas do host sshé realmente fácil e poupa muitos problemas. Aqui está um exemplo:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
Neste exemplo, a configuração nós digitaloceanboxe githube github.compara que possamos fazer os seguintes comandos:
ssh github
ssh digitaloceanbox
Se quisermos fazer login como um usuário diferente daquele especificado no arquivo de configuração, basta colocar user@no início:
Gerando sshchaves
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Observe que eu especifiquei o caminho completo da chave privada que desejo gerar quando solicitado ssh-keygen. Também defini o comment ( -C), que permite identificar facilmente chaves em máquinas remotas.
Isso criará dois arquivos:
.ssh/digitalocean-rsa
- Tecla PRIVADA . Nunca compartilhe isso .
.ssh/digitalocean-rsa.pub
- Chave pública. É isso que você armazena no servidor para autenticar.
Quando você fornecer sua sshchave, verifique se é a .pubversão !! Ao adicionar à sua ~/.ssh/config, certifique-se de adicionar a chave privada correta que corresponde à chave pública que você adicionou ao sistema.
Configuração do servidor
A maioria das instalações vem com a autenticação de chave pública ativada. No entanto, se você começar a fazer as coisas à toa, poderá ter alguns problemas. No local em que o OP está com problemas, eu recomendo que o OP exclua o /root/.ssh/diretório para recomeçar.
Não é recomendável usar sshpara acessar o usuário root no sistema remoto. É recomendável que você faça sshoutro usuário e, em seguida, passe para o root usando sua senha ( sudo su -).
Adicione chaves ao host usando ssh-copy-id
Independentemente de você decidir criar outro usuário e usá-lo sshcomo usuário root, é a maneira recomendada de colocar sshchaves em um servidor:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Isso permite sshdcriar o diretório e os arquivos necessários com as permissões necessárias. Isso significa que não há chance de você atrapalhar as permissões ou precisar se lembrar dos detalhes. Basta usar a ferramenta para fazer upload das chaves.
Desativar autenticação de senha
Dito isto, depois de se autodeclarar e verificar se você pode se conectar usando as chaves, é recomendável desabilitar a autenticação por senha sshde reiniciar o serviço:
- Editar
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
E os novos usuários?
Se você desabilitar a autenticação por senha, como pode inserir novos usuários? Uma maneira é adicionar arquivos de modelo ao /etc/skeldiretório. Depois de digitar um usuário, faça o seguinte:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Edite todos os arquivos encontrados
/etc/skel/.ssh/para que fiquem em branco, a menos que você deseje se autodefinir automaticamente para cada usuário recém-criado.
Quando você cria novos usuários sudo useradd -m newuser, esse usuário terá o .ssh/authorized_keys, que você pode editar e terá as permissões apropriadas.
Depuração
Você pode assistir ao sshdarquivo de log para ver por que as conexões falham ou são recusadas:
sudo tail -f /var/log/auth.log
Enquanto você estiver executando este comando, use outro terminal para tentar um logon. Muitas vezes as mensagens fornecidas são boas o suficiente para ajudar a identificar o problema ou encontrar uma solução online.