Wpis przeznaczony przede wszystkim dla osób, które nie są administratorami Linuxa i generalnie mają kiepskie pojęcie o tym co dzieje się w tym systemie. Jednakże muszą znać podstawy.

Problem

Gdy kopiujemy pliki za pomocą scp to za każdym razem musimy wpisywać hasło. Jest to szczególnie uciążliwe jeżeli chcemy uruchomić kopiowanie ze skryptu. Nie po to piszemy automaty by później ręcznie coś klepać.

Rozwiązanie

Rozwiązaniem jest udostępnić możliwość logowania się na serwer po kluczu.
Załóżmy, że mamy dwa komputery devel i test. Chcemy z serwera devel wysłać plik na test. Na obu serwerach chcemy działać jako użytkownik user.

Praca na devel

Pierwsze kroki stawiamy na devel. Należy sprawdzić czy w katalogu ~/.ssh znajdują się pliki id\_rsa i id\_rsa.pub. Puerwszy to klucz prywatny, drugi publiczny. Jeżeli ich tam nie ma to trzeba wygenerować sobie klucz:

Listing 1. Generujemy klucz

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.

Tam gdzie pisze Enter to naciskamy Enter ;). Pliki już mamy zatem należy je wysłać na serwer. Wysyłamy tylko plik id\_rsa.pub:

Listing 2. Wysyłamy klucz

$ scp id_rsa.pub user@test:/home/user/user_dev.pub
user@test password:
id_rsa.pub                                    100%  405     0.4KB/s   00:00

Na zakończenie logujemy się na test i po raz ostatni podajemy przy tej operacji hasło 😉

Praca na test

Nasze zadanie na tym serwerze będzie dziecinnie proste. Ogranicza się odpowiedniego dodania klucza:

Listing 3. Instalujemy klucz

$ cat user_dev.pub >> .ssh/authorized_keys

Można już się wylogować i zalogować z devel. Nie powinno być już prośby o hasło.

//EDIT:

w związku z tym, że ostatnio walczyłem z pewnym problemem blisko związanym z ta tematyką małe uzupełnienia.
Katalog .ssh powinien mieć prawa dostępu ustawione na 700.
Plik authorized\_keys powinien mieć prawa dostępu ustawione na 600.