Oprócz haseł w SSH dostępna jest opcja autoryzacji za pomocą kluczy. Które rozwiązanie jest bezpieczniejsze ? Jest to kwestia sporna. Zależy jak jest użytkowane. Skomplikowane hasło daje wysokie bezpieczeństwo i możliwość bezproblemowego logowania z każdego miejsca na świecie. Przykładowo klucz o dlugość np 20 znakow, z czego użyte są małe i duże litery, cyfry, znaki specjalne, brak słow (tylko pojedyncze znaki), brak powtarzajacych sie po sobie znaków oraz brak wyrażeń słownikowych etc. daje bardzo wysokie bezpieczeństwo. Oprócz tego trzeba znać jeszcze login do servera, ktory też może być wygenerowany jako losowe znaki. Co do klucza. Klucz daje bardzo duże bezpieczeństwo, z tego względu, żeby móc zalogować sie na server trzeba ten klucz posiadać fizycznie. Z drugiej strony utrudnia to logownie, poznieważ trzeba zadbać, aby ten klucz mieć przy „sobie”. 
Podam skrajny przykład, ale oparty na faktach. Kiedyś byl hack do servera debian.org, a polegał on na tym, ze klucz został wykradziony pewnemu użytkownikowi z jego komputera i za pomocą tego klucza było możliwe zalogowanie się na server. Oczywiście jak zwykle najsłabsze ogniwo stanowi użyszkodnik, ponieważ nie zadbal o bezpieczeństwo klucza. Oprócz tego klucz można podpisać własnym kluczem prywatny co znacznie zwiększa bezpieczeństwo. Posiadając swój klucz, na nic nie zda się atakującemu znajomość loginu na serverze i metoda bruteforce, ponieważ bez posiadania klucza nie jest możliwością zalogowanie sie na server, tym bardziej przy wyłączonej autoryzacji za pomocą hasła w sshd_config.
Stworzymy na początku dwa klucze prywatny i publiczny za pomocą ssh-keygen. Możemy zdefiniować rozmiar klucza oraz typ klucza w bitach. W przykładzie użyjemy przełaczników -t (rodzaj szyfrowania) oraz -b ( długość klucza).

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jkowalski/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/jkowalski/.ssh/id_rsa.
Your public key has been saved in /home/jkowalski/.ssh/id_rsa.pub.
The key fingerprint is:
c9:62:dd:da:cd:71:33:78:3d:08:93:3e:8c:25:b0:f3 jkowalski@pl-1.przyklad.com

Po otrzymaniu pary kluczy możemy przesłać jej składową publiczną do zdalnego komputera. Aby móc korzystać z klucza publicznego, musimy go przechowywać w pliku authorized_keys wewnątrz katalogu .ssh umieszczonego w folderze domowym. Możemy samodzielnie przepisać wartość tego klucza albo wykorzystać w tym celu narzędzie ssh-copy-id

$ ssh-copy-id pl-1.przyklad.com
The authenticity of host 'pl-szczec-centos-1.przyklad.com (192.168.0.1)' can't be established. RSA key fingerprint is 67:e3:50:bf:8c:2c:a0:d5:0c:e9:fc:26:3f:9f:ea:0e. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pl-szczec-centos-1.przyklad.com,192.168.0.1' (RSA) to the list of known hosts.
jkowalski@pl-szczec-centos-1.przyklad.com's password:

Przykład:

Nie można ustalić autentyczności komputera 'pl-szczec-centos-1.przyklad.com (192.168.0.1)' . Odcisk klucza RSA to 67:e3:50:bf:8c:2c:a0:d5:0c:e9:fc:26:3f:9f:ea:0e. Czy na pewno chcesz kontynuować połączenie (tak/nie)? yes
Ostrzeżenie: Trwale dodano 'pl-szczec-centos-1.przyklad.com,192.168.0.1' (RSA) na listę rozpoznawanych komputerów. 
Hasło użytkownika jkowalski@pl-1.przyklad.com:

Spróbujemy się teraz zalogować na zdalny komputer za pomocą następującej komendy:

$ ssh pl-1.przyklad.com

Jeszcze nie mieliśmy okazji połączyć się z adresem pl-szczec-centos-1 z poziomu komputera, na którym jesteśmy zalogowani, dlatego będziemy proszeni o zaakceptowanie klucza SSH. Zostanie wyświetlony niepowtarzalny odcisk klucza, dzięki czemu możesz na własne oczy sprawdzić, czy jest on taki sam jak na zdalnym komputerze.
Aby uzyskać odcisk klucza, możesz użyć narzędzia ssh-keygen. W takim przypadku składnia polecenia wygląda następująco:

ssh-keygen –l -f /etc/ssh/ssh_host_rsa_key.pub.

Protokół SSH zakłada, że nasza nazwa użytkownika na zdalnym komputerze jest taka sama jak nazwa użytkownika na komputerze, na którym jesteśmy lokalnie zalogowani. Jeżeli stanowi to dla Ciebie problem, możesz skopiować klucz na adres o składni nazwaużytkownika@zdalnykomputer.
Zostaniemy następnie poproszeni o hasło logowania — wynika to z faktu, że klucz jeszcze nie został umieszczony we właściwym pliku na zdalnym komputerze. Po prawidłowym uwierzytelnieniu narzędzie ssh-copy-id przeniesie klucz publiczny do odpowiedniej lokacji i zostaniemy poproszeni o przetestowanie działania połączenia. Sprawdzimy je, logując się na zdalnym komputerze.

$ ssh pl-1.przyklad.com
Enter passphrase for key '/home/jkowalski/.ssh/id_rsa':
Last login: Tue Feb 10 15:14:42 2009 from pl-1.przyklad.com
[jkowalski@pl-1 ~]$
Przykład:
Podaj hasło klucza '/home/jkowalski/.ssh/id_rsa':
Ostatnie logowanie: wto lut 10 15:14:42 2009 z adresu pl-1.przyklad.com

ZOSTAW ODPOWIEDŹ

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.