user@homelab:~/docs$ cat 07-ssh.md

SSH: Mac a iPad

Přihlášení klíčem, zkratka ssh homelab, Klíčenka a vypnutí hesel

# obsah

Jak SSH klíče fungují

ssh-keygen vytvoří dvojici souborů:

  • soukromý klíč (id_ed25519) funguje jako klíč od dveří. Zůstává jen na zařízení, ze kterého se připojuješ, a nikam se nekopíruje,
  • veřejný klíč (id_ed25519.pub) funguje jako zámek. Nahraje se na server do ~/.ssh/authorized_keys.

Každé zařízení má vlastní klíč. Když se iPad ztratí, smaže se na serveru jen jeho řádek a Mac funguje dál.

Mac

1. Vygenerovat klíč

shell @ mac
ssh-keygen -t ed25519 -C "mac->homelab"
  • umístění: jen Enter (~/.ssh/id_ed25519),
  • passphrase: ano. Chrání klíč, kdyby se někdo dostal k Macu, a Mac si ji zapamatuje v Klíčence.

2. Zkratka v ~/.ssh/config

ssh config @ mac
Host homelab
    HostName <ip-serveru>
    User <uživatel>
    IdentityFile ~/.ssh/id_ed25519
    AddKeysToAgent yes
    UseKeychain yes
  • Host homelab: místo ssh <uživatel>@<ip-serveru> stačí ssh homelab,
  • UseKeychain + AddKeysToAgent: passphrase se po prvním zadání uloží do Klíčenky macOS.

3. Nahrát veřejný klíč na server

shell @ mac
ssh-copy-id homelab
ssh homelab

ssh-copy-id se naposledy zeptá na heslo k účtu na serveru, zkopíruje .pub do authorized_keys a nastaví práva. Pokud by passphrase nezůstala uložená:

shell @ mac
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Vypnutí přihlašování heslem

shell @ server
sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
text @ server
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
shell @ server
sudo sshd -t && sudo systemctl restart ssh
sudo sshd -T | grep -E 'passwordauthentication|kbdinteractive|permitrootlogin'

Proč 00- na začátku jména: soubory v sshd_config.d/ se čtou podle abecedy a u sshd platí první nalezená hodnota. Soubor od instalátoru (např. 50-cloud-init.conf) může heslo povolovat, a díky prefixu 00- má přednost náš.

Test z Macu: první příkaz musí projít, druhý musí skončit Permission denied (publickey).

shell @ mac
ssh homelab
ssh -o PubkeyAuthentication=no homelab

iPad (Termius)

  1. Keychain → + → Generate Key, typ ED25519, název ipad.
  2. Zkopírovat veřejný klíč (ssh-ed25519 AAAA…) a poslat si ho na Mac, třeba přes AirDrop. Veřejný klíč tajný není.
  3. Přidat ho na server na nový řádek. Klíč z Macu nemazat:
shell @ server
nano ~/.ssh/authorized_keys
  1. Hosts → New Host: hostname <ip-serveru>, port 22, Username <uživatel>, Key ipad, heslo nechat prázdné.

Přístup z iPadu funguje jen v domácí síti. Mimo domov ho vyřeší Tailscale, viz Backlog.