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.