
RAFFORZAMENTO SSH
Blocca SSH su Debian/Ubuntu in un unico comando: nuova porta, nessun login root, autenticazione tramite chiave, UFW e Fail2Ban opzionali.
Quando esegui lo script, rileva il tuo sistema operativo e mostra le impostazioni prima di chiedere di continuare:

Su Debian/Ubuntu:
sudo apt-get install -y git
rm -rf ssh-hardening
git clone https://github.com/spookey007/ssh-hardening.git
cd ssh-hardening
Esegui questo comando ogni volta che vuoi ottenere l'ultima versione dello script.
chmod +x ssh_harden.sh script.sh
Se salti questo passaggio, potresti ottenere "comando non trovato" quando esegui ./ssh_harden.sh. Se ciò accade, usa invece il passo 5 con sudo bash ssh_harden.sh.
SSH_PUB_KEY)Linux / macOS
ssh-keygen -t ed25519 -C "[email protected]"
Premi Invio per il percorso predefinito (~/.ssh/id_ed25519). Opzionale: imposta una passphrase.
Mostra la tua chiave pubblica (copiala in SSH_PUB_KEY):
cat ~/.ssh/id_ed25519.pub
Windows (PowerShell o Git Bash)
ssh-keygen -t ed25519 -C "[email protected]"
Premi Invio per il percorso predefinito. Opzionale: imposta una passphrase.
Mostra la tua chiave pubblica:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pubtype %USERPROFILE%\.ssh\id_ed25519.pubCopia l'intera riga (inizia con ssh-ed25519 ...). Questa è la tua SSH_PUB_KEY.
Sostituisci i valori con i tuoi, poi esegui:
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 ottieni "comando non trovato", usa:
sudo bash ssh_harden.sh
(con gli stessi SSH_USER=... SSH_PASS=... ecc. davanti).
In un nuovo terminale, connettiti usando la nuova porta (non la 22):
ssh -p 49221 kamaileo@YOUR_SERVER_IP
Usa la porta e l'utente che hai impostato. Chiudi la sessione originale solo dopo aver verificato che il login e sudo funzionino.
Usa sempre la nuova porta. Dopo l'hardening, SSH non è più sulla porta 22. Connettiti sempre con:
ssh -p <YOUR_PORT> <USER>@<SERVER_IP>
Esempio: ssh -p 49221 [email protected]
Salva l'output dello script al termine. Alla fine lo script stampa un riepilogo con il tuo utente, la porta, il comando di connessione e se è stata impostata una password. Copia o fai uno screenshot di quel blocco e conservalo in un posto sicuro. Se perdi la chiave SSH, dimentichi la porta o la password, quel record ti aiuterà a recuperare o riconnetterti (ad esempio tramite console/VNC usando lo stesso utente e password).
Lo script fornisce tutto ciò di cui hai bisogno: utente, porta, stato di UFW/Fail2Ban e il comando esatto ssh -p .... Nessuna congettura.
Se SSH_USER è già presente sul server, lo script non crea un nuovo utente e non cambia la password. Si limita a:
sudo~/.ssh/authorized_keys se passi SSH_PUB_KEYQuindi puoi eseguirlo di nuovo per 'hardening solo' senza toccare la password esistente.
| Variabile | Esempio | Cosa fa |
|---|---|---|
SSH_USER | kamaileo | Nome utente (creato se mancante; se esiste, la password rimane invariata). |
SSH_PASS | 'YourPass123!' | Password solo per nuovi utenti. Usane una forte. |
SSH_PORT | 49221 | Porta SSH. Userai: ssh -p 49221 user@server. |
PORTS | "5060,5061,10000-20000" | Porte extra per UFW (opzionale). |
SSH_PUB_KEY | "ssh-ed25519 AAAA..." | La tua chiave pubblica. Fortemente raccomandata per non rimanere bloccato fuori. |
| Sistema operativo | Supportato | Testato | Installazione 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 |
Su sistemi operativi non supportati lo script stampa Prossimamente 😊 e termina senza apportare modifiche.
SSH_PUB_KEY in modo da poter ancora accedere dopo la disattivazione dell'autenticazione tramite password.ssh -p PORT user@server.Se questo script ti ha fatto risparmiare tempo o un mal di testa, puoi supportare il progetto con una donazione una tantum.
BTC: 3L1Gc4avD4Bqoi2F9aq6z4heT13fXA8DZ9
Grazie comunque.