Konfiguracja ssh by działało po kluczu

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.

Napisz odpowiedź

Twój adres e-mail nie zostanie opublikowany.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax