Uživatelské nástroje

Nástroje pro tento web


navody:server:ssh

SSH

SSH poskytuje šifrovaný vzdálený terminál a bezpečný přenos souborů. Na VPS se obvykle připojíš jako uživatel root:

ssh root@ADRESA_VPS

Aktuální IP adresy najdeš v detailu VPS ve vpsAdminu:

IP adresy a příkaz pro připojení přes SSH

Ověření klíče serveru

Při prvním připojení zobrazí SSH otisk hostitelského klíče serveru. Ve vpsAdminu otevři detail své VPS a porovnej otisk s tabulkou Hostitelské klíče SSH. Klíč potvrď jen tehdy, když se otisky shodují. Ověření brání tomu, aby ses připojil k jinému serveru, který se za tvoji VPS pouze vydává.

Otisky hostitelských klíčů SSH ve vpsAdminu

Po přeinstalaci VPS nebo úmyslném vygenerování nových hostitelských klíčů se otisk změní. Starý záznam odstraň až po ověření důvodu změny a nového otisku:

ssh-keygen -R ADRESA_VPS

Nevysvětlené varování o změně hostitelského klíče neobcházej vypnutím jeho kontroly.

Přihlašování veřejným klíčem

Veřejný klíč je pro běžné přihlašování vhodnější než heslo. Soukromá část zůstává na tvém počítači; nikdy ji neposílej na server ani jiné osobě. Pro nový klíč použij Ed25519 a nastav mu silnou přístupovou frázi:

ssh-keygen -t ed25519 -a 64 -C "muj-pocitac"

Výchozí umístění klíče je ~/.ssh/id_ed25519. Přístupová fráze chrání soukromý klíč při ztrátě nebo napadení počítače. Abys ji nemusel zadávat při každém přihlášení, použij ssh-agent nebo systémovou klíčenku.

Nová VPS dovoluje první přihlášení roota heslem, takže veřejný klíč nahraj přímo:

ssh-copy-id root@ADRESA_VPS

Klíč může spravovat také vpsAdmin. Při jeho přidání můžeš zvolit automatické nahrávání do nových a přeinstalovaných VPS. Otevři Upravit profil → Veřejné klíče → Přidat veřejný klíč a vlož obsah souboru ~/.ssh/id_ed25519.pub.

Přidání veřejného klíče

V detailu běžící VPS je také formulář pro dodatečné nahrání některého z uložených veřejných klíčů:

Nahrání veřejného klíče do VPS

Každý klíč, který už nepoužíváš nebo jehož soukromá část mohla uniknout, odstraň ze serverů. V Upravit profil → Veřejné klíče jej odstraň také z vpsAdminu.

Přístup uživatele root

Šablony vpsFree ve výchozím nastavení dovolují přihlášení uživatele root přes SSH. Je to praktické pro první přihlášení, ale heslo uživatele root je zároveň častým cílem automatických útoků.

Přímé přihlášení roota můžeš ponechat, ale povolit ho jen veřejným klíčem. V konfiguraci sshd nastav:

PubkeyAuthentication yes
PermitRootLogin prohibit-password
PasswordAuthentication no
KbdInteractiveAuthentication no

Nastavení bývá v /etc/ssh/sshd_config nebo v souboru načítaném z adresáře /etc/ssh/sshd_config.d/. U již existujících nastavení záleží na pořadí, ve kterém je sshd načte, proto vždy zkontroluj výslednou konfiguraci příkazem sshd -T.

Pokud přímé přihlášení roota nechceš vůbec, vytvoř běžný účet se sudo. Nejprve ověř jeho klíč a funkční sudo, teprve potom nastav PermitRootLogin no. Postup vytvoření správcovského účtu se liší podle distribuce. Přímé přihlášení roota nezakazuj, dokud nový účet skutečně nefunguje.

Na NixOS nepiš do generovaného sshd_config. Použij volby services.openssh.settings v systémové konfiguraci; podrobnosti najdeš ve vyhledávači voleb NixOS.

Bezpečný postup změny konfigurace

Chyba v nastavení SSH tě může od VPS odříznout. Postupuj proto takto:

  1. Nech otevřené původní funkční SSH spojení a změny prováděj v něm.
  2. V druhém terminálu nejprve ověř, že se přihlásíš novým klíčem. Pro cílený test můžeš použít:
    ssh -o PreferredAuthentications=publickey -o PasswordAuthentication=no -o KbdInteractiveAuthentication=no root@ADRESA_VPS
  3. Teprve potom vypni přihlašování heslem nebo přístup roota.
  4. Před načtením změn zkontroluj syntaxi a výsledné hodnoty:
    sshd -t
    sshd -T | grep -E '^(pubkeyauthentication|permitrootlogin|passwordauthentication|kbdinteractiveauthentication) '
  5. Pokud kontrola nehlásí chybu, načti konfiguraci bez ukončení běžících spojení:
    systemctl reload sshd 2>/dev/null || systemctl reload ssh
  6. Otevři úplně nové SSH spojení, vyzkoušej přihlášení i sudo, pokud ho používáš, a až potom zavři původní relaci.

Příkaz sshd -t musí skončit bez výstupu a s návratovým kódem 0. Pokud selže, konfiguraci nenačítej a nejprve chybu oprav.

Když se odřízneš

Pokud nové SSH spojení nefunguje, nezavírej původní relaci. Vrať změnu, spusť sshd -t, znovu načti službu a zkontroluj také firewall.

Když už žádná SSH relace nezůstala, návod ke vzdálené konzoli ve vpsAdminu tě provede obnovením přístupu. Konzole funguje nezávisle na SSH i síťovém firewallu. Během restartu se v ní objeví start menu; volba Run shell spustí /bin/sh přímo ve VPS, takže konfiguraci opravíš bez přihlášení přes SSH.

Pokud běžný systém stále běží a v konzoli se můžeš přihlásit, oprav nebo obnov konfiguraci, ověř ji a restartuj příslušnou službu:

sshd -t
systemctl restart sshd 2>/dev/null || systemctl restart ssh

V prostředí Run shell neběží systemd, takže v něm systemctl nepoužívej. Obnov funkční konfiguraci, ukonči shell příkazem exit a ve start menu zvol Start system. Potom vyzkoušej nové SSH spojení. Vzdálená konzole je pro takovou opravu určená, takže se nemusíš bát ji použít.

Další dokumentace

navody/server/ssh.txt · Poslední úprava: autor: aither

Nástroje pro stránku