Jak zalogować się do serwera używając klucza SSH?

Aby zalogować się do serwera z użyciem klucza SSH potrzebujesz oczywiście: pary kluczy SSH. Jak wygenerować takie klucze dowiesz się z artykułu:

Do logowania możesz użyć komendy ssh, podając nazwę użytkownika oraz nazwę hosta w formacie: ssh login@host

ssh [email protected]

Logowanie za pomocą klucza SSH eliminuje konieczność podawania hasła użytkownika. Jedyny moment, kiedy zostaniesz poproszony o hasło, to sytuacja, gdy Twój klucz prywatny jest zabezpieczony hasłem (passphrase) – wtedy wpisujesz to hasło lokalnie, żeby odszyfrować klucz (nie jest to hasło do serwera).

Kiedy masz więcej niż jeden klucz

Zdarza się, że pracujesz z kilkoma serwerami i każdy ma inny klucz SSH. Wtedy możesz jawnie wskazać, którego klucza prywatnego chcesz użyć. Jeśli Twój serwer korzysta z innego portu niż 22, musisz również wskazać ten port:

ssh -p 234 -i ~/.ssh/myKeyName-ed25519 [email protected]

Argument -i (identity file) mówi klientowi SSH, z którego pliku ma wziąć klucz do autoryzacji. Argumet -p wskazuje na port, którego należy użyć do logowania.

UWAGA! Jeśli posiadasz naprawdę dużo różnych kluczy (przykladowo więcej niż 5-6), próba logowania przy pomocy powyższej komendy może zakończyć się błędem:

Too many authentication failures

Dzieje się tak dlatego, że wskazany klucz jest tylko jednym z tych, które używane są przy próbie logowania. W praktyce klient SSH wysyła do serwera wszystkie dostepne klucze SSH, dopóki nie trafi na pasujący. Aby rozwiązać ten problem i 'zakazać’ wysyłania innych kluczy, użyj komendy:

ssh -o IdentitiesOnly=yes -p 234 -i ~/.ssh/myKeyName-ed25519 [email protected]

Argument -o IdentitiesOnly=yes sprawia, że klient SSH nie użyje innych kluczy z pamięci, skorzysta tylko z podanego w klucza: ~/.ssh/myKeyName-ed25519

Uproszczenie logowania za pomocą pliku SSH config

Jeśli często logujesz się do różnych serwerów, może być ciężko zapamiętać kilka komend zawierających różne porty, klucze ssh czy nazwy użytkownika. Do każdej komendy możesz jednak ustawić własną „etykietę”, której możesz użyć zamiast całej komendy. Taki skrót możesz dodać w pliku ~/.ssh/config, np.:

Host myserver
    HostName example.pl
    User username
    Port 234
    IdentityFile ~/.ssh/myKeyName-ed25519
    IdentitiesOnly yes

Dzięki temu rozwiązaniu logowanie sprowadza się tylko do podania komendy ssh z nazwą skrótu:

ssh myserver

Ustawienie konfiguracji logowania w pliku config sprawdza się również w przypadku posiadania dużej ilości różnych kluczy SSH, ponieważ pozwala precyzyjnie wskazać klucz, który ma być wykorzystany przy logowaniu. Więcej informacji na temat pliku config znajdziesz tu: https://linuxize.com/post/using-the-ssh-config-file/