Wykorzystując klucze publiczne ( na serwerze i komputerze lokalnym ) a także klucz prywatny na komputerze lokalnym, możemy logować się bez podawania haseł. Pomijając już wygodę takiego rozwiązania, jest to często przydatne przy skryptach bashowych. Choćby tworzenie backupu na serwerze za pomocą rsync.
W skrócie proces autoryzacji wygląda tak, że na komputerze lokalnym generujemy klucz publiczny i prywatny.
Klucz prywatny jest tym kluczem, który będzie „otwierał” nasze konto na serwerze 🙂 W związku z tym, należy pamiętać aby nie dostał się w niepowołane ręce.
Natomiast klucz publiczny będzie się znajdował zarówno na komputerze lokalnym jak i zostanie skopiowany na serwer aby dokonać autoryzacji. Czyli klucz prywatny jest naszym kluczykiem do zamka ( klucz publiczny ). To tyle jeśli chodzi o teorię dotyczącą całkowitych podstaw tego zagadnienia. Więcej na ten temat:
Przechodząc do praktyki, co musimy zrobić ?
Na samym początku generujemy klucze ( prywatny i publiczny ) na komputerze lokalnym wpisując w konsoli:
Możemy w celu większego bezpieczeństwa wprowadzić hasło dla klucza, jeśli jednak nie chcemy hasła wciskamy ENTER !
Po tej operacji zostaną wygenerowane 2 pliki:
id_rsa
id_rsa.pub
Pierwszy plik to nasz klucz prywatny drugi id_rsa.pub jak wskazuje rozszerzenie to klucz publiczny, który trzeba skopiować na serwer.
Jeśli chodzi o lokalizację tych plików to znajdują się w katalogu .ssh, który znajduje się w katalogu użytkownika.
Dla przykładu dla systemu OS X, będzie to:
/Users/__NAZWA_UZYTKOWNIKA__/.ssh
Dla Linuxa:
/HOME/__NAZWA_UZYTKOWNIKA__/.ssh
Teraz należy skopiować nasz klucz publiczny na serwer do którego chcemy się logować bez podawania hasła (OS X):
Dla Linuxa:
Oczywiście w tym wypadku jeszcze musimy podać hasło aby skopiować na serwer nasz klucz publiczny przez program scp ( secure copy ).
Logujemy się teraz na nasz serwer w standardowy sposób przez ssh i sprawdzamy czy plik z kluczem został skopiowany i czy istnieje katalog .ssh. Katalog jest niewidoczny więc sprawdzamy to przez:
Jeśli katalogu nie ma – tworzymy go, pamiętając aby nadać mu odpowiednie prawa ( 700 ) czyli powinno być drwx dla właściciela pliku, jak widać na poniższym listingu:
Tworzymy katalog .ssh na serwerze jeśli go nie mamy, wchodzimy do katalogu użytkownika:
Nadanie odpowiednich praw dla katalogu .ssh:
I na koniec kopiujemy na serwerze zawartość naszego klucza publicznego do pliku authorized_keys:
Po tych wszystkich czynnościach, możemy zalogować się z naszego lokalnego komputera na serwer bez podawania hasła: