Eu tenho uma instalação do Ubuntu 22.04.1 e estou usando a autenticação pubkey + chave privada para fazer login no ssh.
Então aqui estão os passos que tomei
- Primeiro criei um par de chaves no meu mac.
- Então entrei no servidor e editei
/etc/ssh/sshd_config
para adicionar uma nova porta para o login ssh - Abri aquela porta no firewall (UFW) e fechei o padrão 22.
- Fiz um
ssh-copy-id -i /path/to/public/key root@host
para copiar a chave pública para o servidor. - Então,
/etc/ssh/sshd_config
novamente, para proibir a autenticação por senha - Reiniciei o sshd e testei a conexão com o root. A conexão funcionou perfeitamente.
- Reativei a autenticação por senha e testei o ssh com um dos meus usuários sudo (não root) usando usuário + senha na nova porta. A conexão funcionou perfeitamente.
- Fiz uma
ssh-copy-id -i /path/to/public/key user@host
cópia da chave pública para o servidor em .ssh/authorized_keys para esse usuário específico. O procedimento não retornou erros e relatou que uma chave foi copiada. Entrei no servidor e verifiquei novamente o arquivoauthorized_keys e a chave estava realmente lá. - Então,
/etc/ssh/sshd_config
novamente, para proibir a autenticação por senha - Reiniciei o sshd e testei a conexão com o usuário.É aqui que estou tendo um problemaO usuário não consegue fazer login. Quando tento, recebo um erro:
Permission denied (publickey)
. Quando reativo a autenticação por senha, consigo me conectar perfeitamente, mas ainda sem as chaves. Apenas uma conexão padrão de nome de usuário + senha.
O par de chaves é testado porque uso exatamente a mesma combinação para o usuário root. Quero desativar o Permitrootlogin, mas não consigo. Alguma ideia?
Editar: segui o conselho de @Jos e fiz um login detalhado usando o anúncio root usando o usuário. Aqui estão os 2 resultados. Filtramos todas as informações e chaves confidenciais, IPs, etc. e converti os resultados em capturas de tela:
e o usuário (que não consegue se conectar):
Editar: @steeldriver sugeriu fazer um namei para verificar se os arquivosauthorized_keys são excessivamente permissivos. Aqui está a saída:
| => namei -l ~/.ssh/authorized_keys
f: /home/spitixorismesiti/.ssh/authorized_keys
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxrwx--- spitixorismesiti spitixorismesiti spitixorismesiti
drwx------ spitixorismesiti spitixorismesiti .ssh
-rw------- spitixorismesiti spitixorismesiti authorized_keys