SSH přihlášení bez hesla pomocí klíče (revidováno)

  1. OD KLIENTA – Generovat klíč: ssh-keygen -t rsa
    Veřejný a soukromý klíč (id_rsa.pub a id_rsa) se automaticky uloží do ~/.ssh/ adresář.
    Nastavení bude jednodušší, pokud použijete prázdnou přístupovou frázi. Pokud to nechcete udělat, postupujte podle tohoto průvodce, ale také zkontrolujte bod pod odrážkou níže.
  2. OD KLIENTA – Zkopírujte veřejný klíč do server: ssh-copy-id user@server
    Veřejný klíč klienta bude zkopírován do místění server~/.ssh/authorized_keys.
  3. OD KLIENTA – Připojení k serveru: ssh user@server

Pokud nyní po popsaných 3 krocích nefunguje, zkuste následující:

  • Zkontrolujte ~/ssh oprávnění ke složce v počítači klient a server.
  • Zkontrolujte /etc/ssh/sshd_config v server, aby bylo zajištěno, že možnosti RSAAuthentication, PubkeyAuthentication a UsePAM nejsou zakázány, mohou být ve výchozím nastavení povoleny pomocí yes.
  • Pokud jste při generování klíče klienta zadali přístupové heslo, můžete zkusit ssh-agent & ssh-add k dosažení připojení bez hesla ve vaší relaci.
  • Zkontrolujte obsah /var/log/auth.log na serveru server najdete problém, proč je ověřování klíčů vůbec vynecháno.

Dodatek pro administrátory

Pokud chcete uživatelům dovolit přihlašování pomocí klíčů, musíte mít zapnutou příslušnou volbu v konfiguraci. Je pravděpodobné, že už bude zapnutá od instalace (není důvod ji vypínat), ale přesto je dobré v případě problémů ověřit, že je vše v pořádku. Volbu naleznete v souboru  /etc/ssh/sshd_config:

PubkeyAuthentication yes

Pokud je volba na yes, je tato možnost povolena a vše bude fungovat. Pokud své uživatele chcete donutit používat právě tuto bezpečnou formu autorizace, můžete jim heslo úplně zakázat. To provedete ve stejném konfiguračním souboru změnou následujících vo­leb:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Tímto postupem jednak zajistíte bezpečnější přihlašování uživatelů, ale také zamezíte zlým hochům, aby zkoušeli hádat heslo a „loupat perníček“. V každém případě nezapomeňte po jakékoliv změně restartovat SSH server:

service sshd restart