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?

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?

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200