Logowanie SSH (przez PuTTY) bez podawania hasła

Dzisiaj Mateusz Kamiński opublikował na swoim blogu mały poradnik, jak usprawnić logowanie SSH, aby nie trzeba było za każdym razem podawać hasła. Mateusz opisał, jak to osiągnąć w przypadku, gdy logujemy się z Linuksa. Ja natomiast chciałbym uzupełnić ten poradnik o opis łączenia przez PuTTY bez potrzeby wpisywania hasła.

Na początku na zdalnej maszynie (czyli tej, z którą chcemy się łączyć bez podawania hasła) generujemy sobie klucze (prywatny i publiczny) wpisując w terminalu następującą komendę:

lukasz@~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/users/lukasz/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/users/lukasz/.ssh/id_rsa.
Your public key has been saved in /home/users/lukasz/.ssh/id_rsa.pub.
The key fingerprint is:
f1:fe:c8:e6:6f:fb:6d:91:50:89:1e:d2:10:a4:9a:2b lukasz@v5.matipl.pl
The key`s randomart image is:
+--[ RSA 2048]----+
|          .++ . .|
|          .. + o |
|        ..  o o  |
|        oo   o   |
|       oS .   . .|
|        ..     o |
|     E .  .     .|
|      .  ..o.  ..|
|         o+o+o...|
+-----------------+
lukasz@~$

Teraz trzeba zawartość wygenerowanego pliku .ssh/id_rsa.pub (klucz publiczny) wrzucić do .ssh/authorized_keys:

lukasz@~$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
lukasz@~$

Natomiast plik .ssh/id_rsa (z kluczem prywatnym) kopiujemy na dysk naszego Windowsa. Do dalszej zabawy będzie nam potrzebny program PuTTY-Gen, za pomocą którego przekonwertujemy wygenerowany klucz na format zrozumiały dla programu PuTTY.

Po uruchomieniu PuTTY-Gen klikamy w menu Conversions/Import Key i wybieramy skopiowany wcześniej plik id_rsa z naszym prywatnym kluczem:

Po wczytaniu klucza wystarczy kliknąć Save private key i zapisać przekonwarty klucz gdzieś na dysku (ja go sobie zapisałem w tym samym katalogu, w którym mam program PuTTY):

Po zapisaniu pliku z kluczem program PuTTY-Gen można już usunąć i uruchomić PuTTY. Po uruchomieniu przechodzimy w drzewku do Connection/Data i w polu Auto-login username wpisujemy login, za pomocą którego PuTTY ma się automatycznie logować:

Następnie w Connection/SSH/Auth wskazujemy plik z naszym prywatnym kluczem (ten zapisany programem PuTTY-Gen):

Na koniec wracamy do pierwszego ekranu Session i wpisujemy hosta zdalnej maszyny, jakąś nazwę sesji i zapisujemy całość przyciskiem Save:

I to by było na tyle :) Już nigdy więcej PuTTY nie powinien nas pytać ani o login, ani o hasło :)

Ale to nie wszystko! Logowanie można sobie uprościć jeszcze bardziej tworząc sobie skrót, po kliknięciu którego zostanie automatycznie załadowana nasza zapisana sesja, po pozwoli logować się jednym kliknięciem myszy :) Aby to zrobić, wystarczy utworzyć sobie zwykły skrót do programu PuTTY i w jego właściwościach dopisać parametr -load nazwa_sesji (w moim przypadku nazwą sesji jest wiecek.biz):

I to by było na tyle. No chyba, że wygenerowałeś sobie klucze zabezpieczone passphrase. W takim wypadku trzeba zrobić jeszcze ściągnąć program Pageant. Program ten po jednorazowym wpisaniu passphrase trzyma w pamięci rozszyfrowany klucz prywatny, z którego mogą korzystać inne aplikacje (w tym PuTTY). Najwygodniej jest utworzyć sobie skrót do tego programu i w jego właściwościach podać jako parametr ścieżkę do pliku z naszym prywatnym kluczem:

Po uruchomieniu programu Pageant z takiego skrótu zostaniemy od razu poproszeni o podanie passphrase do naszego klucza, po wpisaniu którego program schowa się grzecznie w trayu i aż do wyłączenia systemu będziemy mogli odpuścić sobie wpisywanie jakichkolwiek haseł:

Program można uruchamiać oczywiście ręcznie, albo po prostu wrzucić go do autostartu Windowsa – wtedy zaraz po załadowaniu systemu zostaniemy poproszeni o podanie passphrase i będziemy mieli to już z głowy.

Od tej pory do zalogowania się przez SSH na zdalnej maszynie wystarczy raz machnąć palcem. Czyż to nie piękne? Oczywiście cała ta zabawa ma sens tylko wtedy, gdy naprawdę często mamy potrzebę logowania się przez SSH na zdalnej maszynie. Jak ktoś używa PuTTY raz na miesiąc, to raczej nie jest dla niego kłopotem wpisanie hasła do konta podczas logowania ;)

Komentarze (16) do “Logowanie SSH (przez PuTTY) bez podawania hasła”

  1. matipl pisze:

    Ja tam PuTTY bym nie ufał ;)

    • Jak by nie patrzeć, PuTTY jest najpopularniejszym klientem SSH :) A popularne programy mają to do siebie, że jak by miały być niegodne zaufania, to zaraz by się o tym zrobiło głośno w całej sieci :)

  2. Marcin pisze:

    Dodaj jeszcze opis ssh-agenta i będzie całkiem w porządku, bo używanie kluczy bez używania agenta jest passe :D

    Co do nieufania, zawsze można dać keyphrase i z automatu nic się nie podzieje.

  3. Pshemko pisze:

    A jak skopiować klucz do Windowsa?

    • Najprościej przez FTP. Odpalasz pod Windowsem jakiegoś klienta FTP, łączysz się z tym kontem, na którym generowałeś klucze, wchodzisz do katalogu .ssh/ (w katalogu domowym) i kopiujesz :)

    • Pshemko pisze:

      „Server refused our key”. Taką odpowiedź dostałem z konsoli gdy próbowałem się zalogować po wykonaniu powyższych czynności.

    • Przekonwertowałeś prywatny klucz w PuTTY-Gen? Wpisywałeś passphrase przy generowaniu kluczy? Jak tak, to uruchomiłeś Pageant?

    • Pshemko pisze:

      Przekonwertowałem plik id_rsa. Nie wpisywałem passphrase.

  4. Ciacho pisze:

    Po co tak kombinować sobie życie?
    Generujesz klucz w putty-gen, publiczny kopiujesz na hosta docelowego zapisujesz do .authorized-keys i to wszystko.

  5. Pshemko pisze:

    A te klucze mają być w katalogu /root/.ssh/ czy /user/.ssh/?

    • Mają być w katalogu usera, na którego chcesz się logować :) Jak logujesz się na usera „kajtek”, to klucz wrzucasz do /home/users/kajtek/.ssh/authorized_keys (czy gdzie tam trzymasz katalogi domowe userów:)

    • Kacper pisze:

      U mnie tez nie chcial dzialac klucz wygenerowany w putty-gen, ale nie pomyslalem o tym, zeby wygenerowac klucze na serwerze :D Dzieki!

  6. Adek pisze:

    I czemu nikt mi wczesniej nie powiedzial ze tak mozna?? Dzieki za ten opis!!

Zostaw komentarz

  • RSS
  • Blip
  • Wykop
  • Facebook
  • Buzz
  • Vimeo
  • YouTube
  • Picasa