Logowanie SSH bez hasła

Chciałbym logować się na zdalne serwery przy użyciu protokołu SSH bez potrzeby wpisywania hasła. Dodatkowo chciałbym wykonywać w ten sposób polecenia wymagające uprawnień administratora. Korzystam z systemu Linux. Czy jest to możliwe?

Kamil Folga
11.07.2007, godz. 15:00

Pakiet SSH pozwala zarówno na zdalne logowanie bez potrzeby podawania hasła oraz zdalne wykonywanie poleceń z uprawnieniami odpowiedniego użytkownika. Nie jest to skomplikowane zadanie. Jak zrealizować logowanie bez podawania hasła? Przedstawiamy kolejne kroki:

1. Generujemy klucz publiczny / prywatny wykonując polecenie ssh-keygen.

Linux#ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

67:00:86:00:64:00:53:00:d7:00:40:00:b9:00:85:00 root@linux

Polecenie ssh-keygen wygenerowało dwa pliki. Pierwszy o nazwie "id_rsa" zawiera klucz prywatny, który nie może być nikomu udostępniany. Drugi o nazwie "id_rsa.pub" zawiera klucz publiczny, który wysyłamy na dowolny serwer z którym zamierzamy ustanowić połączenie.

2. Na tym etapie wykorzystamy możliwość przesyłania plików na zdalne serwery przy wykorzystaniu polecenia SCP. Ten krok nadal wymaga podania hasła.

Linux#scp /root/.ssh/id_rsa.pub root@zdalny_host:~/id_rsa.pub

Warning: Permanently added 'zdalny_host' (RSA) to the list of known hosts.

root@zdalny_host's password:

id_rsa.pub 100% 391 0.4KB/s 00:00

Na zdalny serwer do katalogu domowego użytkownika root został skopiowany plik id_rsa.pub zawierający wygenerowany klucz publiczny.

3. Logujemy się na zdalny serwer przez wykonanie polecenia:

Linux#ssh root@zdalny_host

Podajemy hasło i zakładamy na zdalnym serwerze katalog:

zdalny_host#mkdir /root/.ssh

Prawa dostępu do tego katalogu powinny zostać ustawione na 700.

Następnie dodajemy wygenerowany klucz do autoryzowanych na danym serwerze:

zdalny_host:~# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Od tej pory mamy możliwość logowania się bez hasła do zdalnego serwera.

Za pomocą SSH można przeprowadzić kilka innych interesujących operacji. Podstawową operacją jest zdalny i szyfrowany dostęp do serwerów. SSH jest także często wykorzystywane do przesyłania plików na zdalny serwer:

Linux#scp lokalny_plik zdalny_serwer:/katalog/

Przedstawione polecenie kopiuje lokalny plik do określonego katalogu na zdalnym serwerze.

Istnieje także możliwość transmisji w drugą stronę:

Linux#scp -r zdalny_serwer:/katalog/plik /lokalny_katalog/

Przedstawione polecenie kopiuje plik na zdalnym serwerze do określonego katalogu na lokalnym serwerze.

Niezwykle ciekawą opcją jest możliwość zdalnego wykonywania poleceń:

Linux#ssh nazwa_serwera "polecenie"

Dzięki podobnej składni jesteśmy w stanie w bezpieczny sposób wykonać polecenie na zdalnym serwerze z uprawnieniami dowolnego użytkownika. Przedstawiony proces umożliwi wykonywanie poleceń bez potrzeby podawania hasła.

Polecamy: Vsys - następca SUDO?

Liczba komentarzy: 13

  • dawid

    super !!!!!!!!!!!

  • kors4r

    robię na debianie wszystko tak, jak w tym artykule, ale przy próbie zalogowania się dostaję komunikat: Agent admitted failure to sign using the key. i tu prośba o hasło.... co robię nie tak?

  • ~mbr

    Fajnie, tylko czemu wszystko na roota? Zwykły użytkownik przecież też może - nie trzeba roota ani lokalnie ani na zdalnym hoście.

  • vv

    Dobry art jako pierwszy krok dla poczatkujacego. Jak pierwszy raz cos robie to chce zeby zadzialalo, a pozniej mysle nad dalszym ulepszaniem tego - czyli tutaj poprawa bezpieczenstwa.

  • ruanda

    ssh to faktycznie cudowny wynalazek, ale umozliwianie logowania na roota bezposrednio przez ssh jest co najmniej proszeniem sie o klopoty.

  • Dawid Węgliński

    Myślę, że treść artykułu, który podałem, wyczerpująco odpowiada na to pytanie. Kwestia bezpieczeństwa jest zawsze ważna i powinna być poruszona, a przynajmniej zaznaczona. Jeśli tworzymy klucz, który nie wymaga passphrase, z pewnością nie spełnia warunków bezpieczeństwa. Taki klucz w niepowołanych rękach może stać się bardzo groźnym narzędziem. Jeśli nasz klucz wymaga passphrase, niczym się nie różni od logowania się via ssh z użyciem hasła. ssh-agent jest odpowiednim narzędziem, które powinno zostać wykorzystane w tym opisie.

  • Jestem pod wrażeniem. Może opisz jeszcze jak się obsługuje winampa?

  • od_autora

    Pytanie dotyczyło możliwości realizacji określonej funkcji. Nie poruszałem aspektów bezpieczeństwa tego rozwiązania. Dziękuję za uwagi.

  • shorty

    niebezpieczne, niepolecam zobaczcie ten artykul co dal Dawid Węgliński

  • Dawid Węgliński

    Marny artykuł. Lepsze informacje na temat BEZPIECZNEGO logowania się przez ssh bez użycia haseł można znaleźć tutaj: www[dot]gentoo[dot]org/doc/pl/articles/openssh-key-management-p1.xml

  • lord

    ano otworzyli się podsumowanie artykułu: i tym sposobem potencjalny agresor włamując się na jeden komputer przejmuje kontrolę nad wieloma :D

  • LinuxTux

    Brawo, podoba mi się to, że od pewnego czasu otworzyliście się na Linuksa.

Raport specjalny: Zbudować, utrzymać i zarządzać efektywnym zespołem IT


Niemal każdy tydzień przynosi niepokojące informacje na temat deficytu specjalistów IT na polskim rynku, popyt przewyższa podaż. Jak więc radzić sobie w takiej sytuacji? W prezentowanym raporcie przedstawiamy materiały dotyczące zarządzania strukturami IT.