Configuração do cliente
Configurar ~/.ssh/config
Configurar as entradas do host para ssh é realmente fácil e vai lhe poupar 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, configuramos 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 começo:
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 por ssh-keygen . Eu também defini o comentário ( -C ) que me permite identificar facilmente chaves em máquinas remotas.
Isso criará dois arquivos:
-
%código%
-
tecla PRIVATE . Nunca compartilhe isso .
-
%código%
- Chave pública. Isso é o que você armazena no servidor para autenticar.
Quando você fornecer sua chave .ssh/digitalocean-rsa , verifique se é a versão .ssh/digitalocean-rsa.pub !! Quando você adicionar ao seu ssh , certifique-se de adicionar a chave privada correta que corresponde à chave pública adicionada ao sistema.
Configuração do Servidor
A maioria das instalações virá com a autenticação de chave pública habilitada. Se você começar a fazer todas as coisas por vontade própria, poderá ter alguns problemas, no entanto. Quando o OP estiver com problema, recomendo que o OP exclua o diretório .pub para começar de novo.
Não é recomendável usar ~/.ssh/config para acessar o usuário raiz no sistema remoto. Recomenda-se que você use /root/.ssh/ em outro usuário e, em seguida, passe a raiz usando sua senha ( ssh ).
Adicione chaves ao host usando ssh
Independentemente de você decidir criar outro usuário e usar sudo su - como esse usuário ou o usuário raiz, a maneira recomendada de colocar as chaves ssh-copy-id em um servidor é a seguinte:
-
ssh
Isso permite que ssh crie o diretório e os arquivos necessários com as permissões necessárias. Isso significa que não há chances de você perder permissões ou precisar lembrar dos detalhes. Basta usar a ferramenta para fazer o upload das chaves.
Desativar autenticação de senha
Dito isso, assim que você tiver a chave e verificado que é possível se conectar usando as chaves, é recomendável desabilitar a Autenticação de Senha em ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox e reiniciar o serviço:
- Editar
sshd
-
sshd
-
/etc/ssh/sshd_config
E os novos usuários?
Se você desabilitar a Autenticação de Senha, como poderá chamar novos usuários? Uma maneira é adicionar arquivos de modelo ao diretório PasswordAuthentication no . Depois de digitar um usuário, faça o seguinte:
-
sudo systemctl restart sshd
-
/etc/skel
- Edite todos os arquivos encontrados em
sudo cp -r .ssh/ /etc/skel/ para que fiquem em branco, a menos que você queira digitar automaticamente para cada usuário recém-criado.
Quando você criar novos usuários com ls /etc/skel/.ssh , esse usuário terá o /etc/skel/.ssh/ , que você pode editar e terá as permissões adequadas.
Depuração
Você pode assistir ao arquivo de log sudo useradd -m newuser para ver por que as conexões falham ou são recusadas:
-
.ssh/authorized_keys
Enquanto você está executando este comando, use outro terminal para tentar um login. Muitas vezes as mensagens fornecidas são boas o suficiente para ajudar a identificar o problema ou encontrar uma solução on-line.