
Fortalecimento de SSH
Bloqueie o SSH no Debian/Ubuntu em uma execução: nova porta, sem login root, autenticação por chave, UFW e Fail2Ban opcionais.
Quando você executar o script, ele detecta seu SO e mostra as configurações antes de perguntar se deseja continuar:

No Debian/Ubuntu:
sudo apt-get install -y git
rm -rf ssh-hardening
git clone https://github.com/spookey007/ssh-hardening.git
cd ssh-hardening
Execute isso sempre que quiser a versão mais recente do script.
chmod +x ssh_harden.sh script.sh
Se pular esta etapa, pode receber "command not found" ao executar ./ssh_harden.sh. Se isso acontecer, use o passo 5 com sudo bash ssh_harden.sh.
SSH_PUB_KEY)Linux / macOS
ssh-keygen -t ed25519 -C "[email protected]"
Pressione Enter para o caminho padrão (~/.ssh/id_ed25519). Opcional: defina uma frase secreta.
Mostre sua chave pública (copie isso para SSH_PUB_KEY):
cat ~/.ssh/id_ed25519.pub
Windows (PowerShell ou Git Bash)
ssh-keygen -t ed25519 -C "[email protected]"
Pressione Enter para o caminho padrão. Opcional: defina uma frase secreta.
Mostre sua chave pública:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pubtype %USERPROFILE%\.ssh\id_ed25519.pubCopie a linha inteira (começa com ssh-ed25519 ...). Essa é sua SSH_PUB_KEY.
Substitua os valores pelos seus e execute:
sudo SSH_USER=kamaileo \
SSH_PASS='YourStrongPassword123!' \
SSH_PORT=49221 \
PORTS="5060,5061,10000-20000" \
SSH_PUB_KEY="ssh-ed25519 AAAA... you@yourmachine" \
./ssh_harden.sh
Se receber "command not found", use:
sudo bash ssh_harden.sh
(com os mesmos SSH_USER=... SSH_PASS=... etc. na frente).
Em um novo terminal, conecte usando a nova porta (não a 22):
ssh -p 49221 kamaileo@IP_DO_SEU_SERVIDOR
Use a porta e o usuário que você definiu. Feche a sessão original somente após confirmar que o login e o sudo funcionam.
Use a nova porta sempre. Após o hardening, o SSH não estará mais na porta 22. Conecte-se sempre com:
ssh -p <SUA_PORTA> <USUARIO>@<IP_DO_SERVIDOR>
Exemplo: ssh -p 49221 [email protected]
Salve a saída do script quando ele terminar. No final, o script exibe um resumo com seu usuário, porta, comando de conexão e se uma senha foi definida. Copie ou tire um print desse bloco e guarde em um local seguro. Se perder sua chave SSH, esquecer a porta ou esquecer a senha, esse registro ajudará a recuperar ou reconectar (por exemplo, via console/VNC usando o mesmo usuário e senha).
O script gera tudo que você precisa: usuário, porta, status do UFW/Fail2Ban e o comando ssh -p ... exato. Sem adivinhação.
Se SSH_USER já existir no servidor, o script não cria um novo usuário e não altera a senha. Ele apenas:
sudo~/.ssh/authorized_keys se você passar SSH_PUB_KEYEntão você pode executá-lo novamente para "apenas fazer o hardening" sem tocar na senha existente.
Em SO não suportados, o script exibe Em breve 😊 e sai sem alterar nada.
SSH_PUB_KEY para que você ainda possa fazer login após a autenticação por senha ser desabilitada.ssh -p PORTA usuario@servidor.Se este script economizou seu tempo ou evitou uma dor de cabeça, você pode apoiar o projeto com uma contribuição única.
BTC: 3L1Gc4avD4Bqoi2F9aq6z4heT13fXA8DZ9
De qualquer forma, obrigado.
| Variável | Exemplo | O que faz |
|---|
SSH_USER | kamaileo | Nome de usuário (criado se não existir; se existir, a senha permanece inalterada). |
SSH_PASS | 'YourPass123!' | Senha apenas para novos usuários. Use uma forte. |
SSH_PORT | 49221 | Porta SSH. Você usará: ssh -p 49221 usuario@servidor. |
PORTS | "5060,5061,10000-20000" | Portas extras para UFW (opcional). |
SSH_PUB_KEY | "ssh-ed25519 AAAA..." | Sua chave pública. Altamente recomendada para não ficar bloqueado. |
| SO | Suportado | Testado | Instalação do git |
|---|
| Debian 12 x64 | ✅ | ✅ | sudo apt-get install -y git |
| Debian 11/10, Ubuntu 24/22/20 | ✅ | ❌ | sudo apt-get install -y git |
| RHEL / Rocky / Alma / CentOS | ❌ | ❌ | sudo yum install -y git |
| Fedora | ❌ | ❌ | sudo dnf install -y git |
| Arch | ❌ | ❌ | sudo pacman -Syu git |
| openSUSE | ❌ | ❌ | sudo zypper install -y git |