Logowanie SSH bez hasła
-
- Kamil Folga,
- 11.07.2007, godz. 15:00
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 [email protected]
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 [email protected]_host:~/id_rsa.pub
Warning: Permanently added 'zdalny_host' (RSA) to the list of known hosts.
[email protected]_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 [email protected]_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?