Existuje několik způsobů jak se přihlásit na vzdálený server. Tím nejrozšířenějším, ovšem z bezpečnostního hlediska nepříliš vhodným, je klasické zadávání hesla. Mnohem bezpečnější formou přístupu je však autorizace prostřednictvím osobního SSH klíče.
SSH klíče představují individuální unikátní zašifrovaný přístupový mechanismus, který se skládá z veřejného a privátního klíče. Na straně klienta (vaše pracovní stanice) musí být přítomen privátní klíč a na straně serveru, k němuž se přihlašujete, klíč veřejný.
Nejprve si tedy klíčový pár vygenerujeme:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/localuser/.ssh/id_rsa):
Pro uložení klíčového páru do standardního umístění stačí potvrdit klávesou Enter.
Dalším krokem je zadání passphrase, tedy hesla, kterým daný klíč chráníme před zneužitím. Toto heslo je třeba zadávat při každém použití klíče nebo je možné si jej nechat zapamatovat prostřednictvím nástroje ssh-agent.
Nyní potřebujeme veřejnou část klíče přenést na server:
$ scp /home/localuser/.ssh/id_rsa.pub uzivatel@server:/home/remoteuser/
Na serveru pak již jen vložte obsah souboru s veřejným klíčem mezi autorizované přístupové klíče:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
Pro úplnost je ještě vhodné na serveru přihlašování klasickým heslem zakázat. K tomu je potřeba v souboru /etc/ssh/sshd_config změnit hodnotu
PasswordAuthentication YES
na
PasswordAuthentication NO
Díky tomu bude možné se na server přihlašovat výhradně za pomoci autorizovaných SSH klíčů. Je však ještě nezbytné restartovat SSH server:
$ service ssh restart (Ubuntu)
$ service sshd restart (CentOS 6)
$ systemctl restart sshd (CentOS 7)
V případě, že se serverem pracuje více uživatelů, kteří by měli mít oprávnění administrátora, je vhodné tyto uživatele vydefinovat v souboru /etc/sudoers:
$ adduser uzivatel sudo (Ubuntu)
$ adduser uzivatel wheel (Centos 6/Centos 7)
U přihlašování za pomoci SSH klíčů musíme vždy maximálně dbát na to, aby se privátní klíč nedostal do nepovolaných rukou. Avšak i kdyby se to stalo, již při generování klíče je možné jej (nepovinně) ochránit za pomoci passphrase. Tím uživatel získává maximální míru zabezpečení kombinující ochranu privátního klíče heslem a bezpečného přístupu na vzdálený server pomocí tohoto klíče.
Autor: Jirka Dvořák