SSH Säkerhet – Härdning Steg för Steg
Komplett guide till SSH-härdning. Nyckelbaserad autentisering, portändring, fail2ban, tvåfaktorsautentisering och avancerade konfigurationer.
SSH är din servers ytterdörr
SSH (Secure Shell) är det primära sättet att administrera Linux-servrar. Det är också den första attackvektorn som botnät och angripare provar. En osäkrad SSH-konfiguration med root-login och lösenordsautentisering är som att lämna ytterdörren olåst.
Denna guide tar dig igenom varje steg för att härda SSH — från grundläggande konfiguration till avancerade skyddsåtgärder.
Steg 1: Skapa SSH-nycklar
Nyckelbaserad autentisering ersätter lösenord med kryptografiska nycklar. Din privata nyckel stannar på din dator, din publika nyckel läggs på servern. Ingen kan logga in utan den privata nyckeln.
# Generera Ed25519-nyckel (rekommenderat 2026)
ssh-keygen -t ed25519 -C "din-email@example.se"
# Spara till ~/.ssh/id_ed25519
# Ange ett starkt lösenord (passphrase)
# Kopiera publika nyckeln till servern
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@din-server.se
# Eller manuellt:
cat ~/.ssh/id_ed25519.pub | ssh user@din-server.se \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
# Testa att det fungerar INNAN du inaktiverar lösenord
ssh -i ~/.ssh/id_ed25519 user@din-server.seViktigt: Testa alltid nyckelautentiseringen i en ny terminal-session innan du går vidare. Om nyckeln inte fungerar och du inaktiverar lösenord låser du ut dig själv.
Steg 2: Härda SSHD-konfigurationen
Redigera /etc/ssh/sshd_config med dessa inställningar:
# /etc/ssh/sshd_config — härdad konfiguration
# Inaktivera root-login helt
PermitRootLogin no
# Inaktivera lösenordsautentisering
PasswordAuthentication no
PubkeyAuthentication yes
# Inaktivera tomma lösenord
PermitEmptyPasswords no
# Tillåt bara specifika användare
AllowUsers serveradmin deploy
# Begränsa autentiseringsförsök
MaxAuthTries 3
MaxSessions 3
# Timeout för inaktiva sessioner
ClientAliveInterval 300
ClientAliveCountMax 2
# Inaktivera äldre, osäkra funktioner
X11Forwarding no
PermitUserEnvironment no
AllowAgentForwarding no
# Använd bara moderna protokoll
Protocol 2
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
HostKeyAlgorithms ssh-ed25519
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com# Validera konfigurationen INNAN omstart
sudo sshd -t
# Om inga fel visas: konfigurationen är giltig
# Starta om SSH
sudo systemctl restart sshd
# BEHÅLL din nuvarande session öppen
# Testa i en NY terminal:
ssh serveradmin@din-server.seSteg 3: Byt SSH-port (valfritt)
Att byta port från 22 stoppar inte riktade attacker, men det eliminerar 99% av automatiserade brute force-försök och minskar loggbrus dramatiskt.
# I /etc/ssh/sshd_config
Port 2222
# Öppna den nya porten i brandväggen FÖRST
sudo ufw allow 2222/tcp
# Starta om SSH
sudo systemctl restart sshd
# Testa i ny terminal
ssh -p 2222 serveradmin@din-server.se
# Om det fungerar, stäng port 22
sudo ufw delete allow 22/tcpSteg 4: Fail2ban — automatisk blockering
Fail2ban övervakar loggar och blockerar IP-adresser som gör upprepade misslyckade inloggningsförsök.
sudo apt install fail2ban -y
# Skapa lokal konfiguration
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localRedigera /etc/fail2ban/jail.local:
[DEFAULT]
bantime = 3600 # Blockeringstid: 1 timme
findtime = 600 # Tidsperiod att räkna försök
maxretry = 3 # Max misslyckade försök
banaction = ufw # Använd UFW för blockering
[sshd]
enabled = true
port = 2222 # Din SSH-port
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400 # 24 timmar för SSH# Starta fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Kontrollera status
sudo fail2ban-client status sshd
# Se blockerade IP:er
sudo fail2ban-client status sshd | grep "Banned IP"
# Avblockera en IP manuellt
sudo fail2ban-client set sshd unbanip 192.168.1.100Steg 5: SSH-config för bekvämlighet
En bra SSH-config gör det enkelt att ansluta till flera servrar utan att skriva långa kommandon.
# ~/.ssh/config
Host prod
HostName 46.224.150.176
User serveradmin
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host staging
HostName staging.example.se
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host backup
HostName backup.example.se
User backup
Port 2222
IdentityFile ~/.ssh/id_ed25519_backup
# Alla servrar: keepalive
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
AddKeysToAgent yes# Nu kan du ansluta med:
ssh prod # Istället för: ssh -p 2222 -i ~/.ssh/id_ed25519 serveradmin@46.224.150.176
ssh staging
ssh backupSammanfattning
SSH-härdning i fem steg: byt till nyckelbaserad autentisering, härda SSHD-konfigurationen, byt port (valfritt), installera fail2ban och organisera dina anslutningar med SSH-config.
Dessa åtgärder eliminerar den absoluta majoriteten av SSH-attacker. Kombinera med vår guide om Linux serversäkerhet för ett komplett säkerhetsskydd, och se till att du har fungerande backup-strategier om det värsta trots allt händer.