Logowanie na serwer przez SSH bez hasła

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:

user@computer:$ ssh-keygen -t rsa

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):

user@computer:$ scp /Users/__NAZWA_UZYTKOWNIKA__/.ssh/id_rsa.pub __USER__@jakishost.com:~/id_rsa.pub

Dla Linuxa:

user@computer:$ scp /HOME/__NAZWA_UZYTKOWNIKA__/.ssh/id_rsa.pub __USER__@jakishost.com:~/id_rsa.pub

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:

user@computer:$ ls -la

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:

user@computer:$ drwx------ 2 uzytkownik moja_grupa 4096 Sep 16 13:10 .ssh

Tworzymy katalog .ssh na serwerze jeśli go nie mamy, wchodzimy do katalogu użytkownika:

user@computer:$ mkdir ./.ssh

Nadanie odpowiednich praw dla katalogu .ssh:

user@computer:$ chmod 700 ./.ssh

I na koniec kopiujemy na serwerze zawartość naszego klucza publicznego do pliku authorized_keys:

user@computer:$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Po tych wszystkich czynnościach, możemy zalogować się z naszego lokalnego komputera na serwer bez podawania hasła:

user@computer:$ ssh user@naszserwer.com

Dodaj komentarz