Vygenerování ed25519 SSH klíčů
Na počítači (Widnows / Mac / Linux), na kterém nejste k serveru skrze SSH připojeni (pokud jste, odhlaste se), v příkazovém řádku nebo terminálu, zadejte příkaz:
ssh-keygen -t ed25519 -C "your_email_address@example.com, PC name"- parametr 
-tdefinuje typ klíče ed25519 - dobrovolný parametr 
-Cpřidává poznámku, k jakému uživateli a počítači je klíč vázán. 
Potvrďte / určete novou cestu a název souboru (aby jste je snadno rozpoznali), kde mají být klíče uloženy a v dalším kroku vymyslete, zadejte a opětovným zadáním potvrďte bezpečnostní frázi, která se stane samotný heslem privátního SSH klíče. Buďte si dále vědomi, že zadabou bezpečnostní frázi v případě zapomenutí nelze obnovit.
Do zadané složky v kroku výše se vygenerovaly 2 SSH klíče.
- parametr 
 Zjištění veřejného klíče
Veřejný SSH klíč je soubor s koncovkou ".pub". Obsah veřejného klíče zjistíme jeho otevřením skrze Příkazový řádek / Terminál.
Na Windowstype %USERPROFILE%\.ssh\nazev_souboru.pubNa Mac / Linuxcat ~/.ssh/nazev_souboru.pubVeřejný klíč začíná typem "ssh-ed25519 AAAAC..."
- 
									
Vzdáleně se přihlásíme k serveru pomocí uživatelského jména a hesla
- Připojíme počítač (z kterého se vzdáleně připojujeme) a server, k němuž se připojujeme, do stejné lokální sítě (totožného routeru)
 - Připojíme se vzdáleně k serveru
Na Windows
- Spustíme Putty klienta nainstalovaného v počítači, přejdeme na záložku "Sessions".
 - Zadáme pole "Host" značící IP adresu serveru (zjistíme v routeru) a port, skrze nějž se k serveru připojujeme (výchozí je 
22- v dalších krocích jej zakážeme, nyní jej však použijte). - V otevřeném okně příkazového řádku zadejte uživatelské jméno a heslo pro připojení k serveru (bylo definováno při instalaci serveru)
 
Na Mac / Linux- Spustíme terminál
 - V terminálu zadáme ssh příkaz s odkazem na konkrétního uživatele, IP serveru a port:
ssh username@server_ip -p 22Poznámka:
sshpříkaz pracuje s defaultním přihlašováním pomocí klíčů. Nemáme-li jej specifikován v rámcisshpříkazu, počítač zkusí všechny. Máme-li v počítači, z něhož se přihlašujeme vyšši početknown hostserverů, můžeme překročit maximální počet pokusů a dostat od serveru zamítnutí přístupu s oznámením "Too many authentication failures", jelikož žádný s použitých klíčů nebyl pro náš server validní. Oprava je snadná, v rámcisshpříkazu se jasně specifikuje metoda autentizace, v tomto případě heslo.ssh -o IdentitiesOnly=yes -o PreferredAuthentications=password username@server_ip -p 22 - Zadáme heslo pro připojení k serveru (bylo definováno při instalaci serveru)
 
 
 Nahrání veřejného klíče na server
- Na serveru vytvoříme příkazem 
mkdir -p ~/.sshsložku pro uložení veřejných SSH klíčů. - Příkazem 
nano ~/.ssh/authorized_keysotevřeme soubor authorized_keys a vložíme do něj veřejný klíč zjištěný v kroku 1. (vkládáme celý řádek, začínající ssh-ed25519 ...) - Soubor "authorized_keys" stisknutím kláves ctrl+x uložíme a zavřeme.
 - příkazem 
exitpřipojení k serveru ukončíme 
- Na serveru vytvoříme příkazem 
 Vzdálené přihlášení k serveru pomocí privátního SSH klíče
Na WindowsPoužíváme-li OS Windows a Putty klienta, námi vygenerovaný formát privátního klíče v kroku 1 (soubor bez koncovky) není ve formátu podporovaném Putty klientem. Je tedy nezbytné si jej převést, a to následujícím způsobem:
- Příkazem 
type %USERPROFILE%\.ssh\nazev_souborusi zobrazíme privátní klíč a celý tak, jak je, včetně "-----BEGIN OPENSSH PRIVATE KEY-----" a "-----END OPENSSH PRIVATE KEY-----" zkopírujeme do .txt souboru, který si uložíme. - Stáhneme program "puttygen.exe (a RSA and DSA key generation utility)" z oficiálního Putty webu.
 - Otevřeme stažený program "PuTTY Key Generator", dole vybereme typ "EdDSA" → (Ed25519). V horní liště zvolíme možnost "File → Load private key". Přepneme na zobrazení "All FIles (*.*)" a vybereme .txt soubor, do nějž jsme privátní klíč v předchozím kroku uložili. Zadáme passphrase, kterou jsem definovali při tvorbě klíče. Jestliže vše prošlo, dostaneme upozornění "Successfully imported foreign key...".
 - Stiskneme tlačítko "Save private key" a privátní SSH klíč v Putty podporovaném .ppk formátu uložíme opěd do složky .ssh. Je-li něco nejasné, postup se screenshoty naleznete zde.
 - Otevřeme Putty klient, přejdeme do sekce "Connections → SSH → Auth → Credentials" a v poli "Private key file for authentization" zvolíme "Browse" a vybereme .ppk soubor uložený v předchozím kroce.
 - Přejdeme do sekce "Session", zadáme pole "Host" a "Port", a po stisknutí tlačítka "Open", v nově otevřeném příkazovém okně zadáme uživatelské jméno (login as:), načež namísto požadavku na heslo bychom měli vidět identifikaci veřejného klíče, v rámci něhož se připojujeme s požadavkem na vložení passphrase.
 - Zadáme passhprase a přihlásíme se.
 
Na Mac / Linuxssh username@server_ip -p 22 -i ~/.ssh/private_key- Příkazem 
 
SSHD konfigurace
Možnosti přihlášení skrze SSH na úrovni celého systému i jednotlivých uživatelů lze nastavovat v konfiguračním souboru /etc/ssh/sshd_config. Ten lze otevřít následujícím příkazem:
sudo nano /etc/ssh/sshd_config
						Jelikož soubor je otevírán prostřednictví sudo i se změnovými právy, pro jeho otevření může být vyžadováno uživatelské heslo (uživatelské heslo, s kterým jste se k serveru přihlašovali).
Do souboru /etc/ssh/sshd_config se zanáší definice dle potřeb SSH přihlašování, viz níže. Ačkoli samotnou změnou nedojde k automatickému odhlášení, přesto, z bezpečnostních důvodů je vhodné být k serveru připojen ve 2 instancích (2 oknech), aby jste v případě testovacího odhlášení se v jednom a nemožnosti se opětovného přihlášení měli stále možnost navrácení provedených změn z druhého okna.
- Jestliže nemáte otevřen soubor 
/etc/ssh/sshd_config, otevřete jej příkazemsudo nano /etc/ssh/sshd_config - Najdeme záznam 
#AuthorizedKeysFilea odkomentujeme jej odstraněním#z jeho začátku - Najděte záznam 
KbdInteractiveAuthenticationa nastavte jej na hodnotuno. Současně se ujistěte, že není zakomentován (nezačíná #) - Najděte záznam 
PasswordAuthentication yesa změňte jej na hodnotuno. Ujistěte se, že není zakomentován (nezačíná #) - Ujistěte se, že záznam 
PermitRootLoginmá hodnotuprohibit-password(PermitRootLogin prohibit-password) - Soubor ukončete příkazem ctrl+x a při ukončování uložte.
 Zadejte příkaz
sudo sshd -T | grep -i passwordauthenticationa ověřte, že jeho výpisem je záznam "passwordauthentication no".V tomto nastavení je možné k serveru přistupovat jak pomocí kombinace username + private key, tak i klasicky username + password. Chceme-li, aby byla možná varianta jen s použitím privatekey, na konci souboru
/etc/ssh/sshd_configje nutné definovatAuthenticationMethods publickey.- Restartujte SSH server
			
- Na Ubuntu 24.04
					
sudo systemctl restart ssh - Na Ubuntu 22.04
					
sudo systemctl restart sshd sudo systemctl restart ssh 
 - Na Ubuntu 24.04
					
 - Odhlaste se příkazem 
logout. - Při opětovném přihlášení bez public key by jste měli dostat po zadání uživatelského jména chybovou hlášku "No supported authentization methods available (server sent: publickey)". Při použití privatekey by přihlášení mělo být úspěšné.
 - Poznámka: Přihlášení pomocí uživatelského jména a hesla je stále možné lokálně - pomocí klávesnice připojené k serveru
 
- Jestliže nemáte otevřen soubor 
/etc/ssh/sshd_config, otevřete jej příkazemsudo nano /etc/ssh/sshd_config - Na konec souboru vložte následující definici:
			
Match User <specificUserName> ChallengeResponseAuthentication yes AuthenticationMethods keyboard-interactiveTento předpis přepisuje pro uživatele
<specificUserName>následující globální nastavení:PasswordAuthentication nonayesAuthenticationMethodsnakeyboard-interactive(password+ Google 2FA)
 - Soubor ukončete příkazem ctrl+x a při ukončování uložte.
 - Restartujte SSH server 
			
- Na Ubuntu 24.04
					
sudo systemctl restart ssh - Na Ubuntu 22.04
					
sudo systemctl restart sshd sudo systemctl restart ssh 
 - Na Ubuntu 24.04
					
 
Kontrola autentizačního logu
Čelíte-li problémům s přihlášením libovolného uživatele skrze SSH, zkontrolujte autentizační log.
sudo tail -f /var/log/auth.log