Illustration för Säkerhet
← Tillbaka till artiklar
Säkerhet2026-03-11·12 min läsning

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.se

Viktigt: 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.se

Steg 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/tcp

Steg 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.local

Redigera /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.100

Steg 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 backup

Sammanfattning

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.