user@homelab:~/docs$ cat ssh.md
SSH
SSH jen s klíči z Macu a iPadu, hesla a root zakázané
# obsah
Přehled
| Cíl | SSH jen s klíčem pro každé zařízení |
| Klienti | Mac (Terminál), iPad (Termius) |
| Výsledek | ssh homelab doma i venku (přes Tailscale); hesla a root zakázané |
Každé zařízení má vlastní ED25519 klíč. Soukromý klíč zařízení nikdy neopouští; na serveru jsou jen veřejné klíče v ~/.ssh/authorized_keys. Ztracené zařízení se zablokuje smazáním jednoho řádku.
1. Mac
ssh-keygen -t ed25519 -C "mac->homelab"Klíč s heslem (passphrase); macOS ho uloží do Klíčenky.
# ~/.ssh/config
Host homelab
HostName homelab.<tailnet>.ts.net
User <uživatel>
IdentityFile ~/.ssh/id_ed25519
AddKeysToAgent yes
UseKeychain yesssh-copy-id homelabssh-copy-id naposledy použije heslo k účtu, přidá veřejný klíč a nastaví práva.
2. iPad (Termius)
- Keychain → Generate Key, typ ED25519, název
ipad. - Veřejný klíč přidat na server, jeden klíč na řádek:
nano ~/.ssh/authorized_keys- Hosts → New Host: hostname
homelab.<tailnet>.ts.net, port22, uživatel<uživatel>, klíčipad, bez hesla.
3. Zákaz přihlášení heslem
# /etc/ssh/sshd_config.d/00-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin nosudo sshd -t && sudo systemctl restart sshSoubory v sshd_config.d/ se čtou podle abecedy a platí první nalezená hodnota; prefix 00- má přednost před soubory z instalátoru (např. 50-cloud-init.conf).
Ověření
sudo sshd -T | grep -E 'passwordauthentication|kbdinteractive|permitrootlogin'ssh homelab # musí projít
ssh -o PubkeyAuthentication=no homelab # musí selhat: Permission denied (publickey)Poznámky
- Důvod odmítnutí přihlášení ukáže log serveru:
sudo journalctl -u ssh -n 20 --no-pager. - Handshake finished a pak chyba v klientovi znamená, že síťová cesta funguje a selhala autentizace.