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 digitaloceanbox
e github
e github.com
para 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 ssh
chaves
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 ssh
chave, verifique se é a .pub
versã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 ssh
para acessar o usuário root no sistema remoto. É recomendável que você faça ssh
outro 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 ssh
como usuário root, é a maneira recomendada de colocar ssh
chaves em um servidor:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Isso permite sshd
criar 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 sshd
e 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/skel
diretó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 sshd
arquivo 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.