This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

9 Testy SSH

9.1 Przegląd

Testy SSH są jednym z elementów monitorowania nie wymagającego agenta. Agent Zabbix nie jest potrzebny do wykonania testów SSH.

Żeby serwer Zabbix mógł przeprowadzać testy SSH musi być początkowo skonfigurowany ze wsparciem dla SSH2.

Minimalna wymagana wersja biblioteki libssh2 to 1.0.0.

9.2 Konfiguracja

9.2.1 Autoryzacja hasłem

Testy SSH obsługują dwie metody autoryzacji, odpowiednio parą użytkownik/hasło i bazującą na plikach-kluczach.

Jeżeli nie chcemy używać kluczy, żadna dodatkowa konfiguracja nie jest wymagana, poza linkowaniem libssh2 do Zabbix, przy budowie z kodów źródłowych.

9.2.2 Autoryzacja plikiem klucza

Żeby w pozycjach SSH użyć autoryzacji opartej o klucze, wymagane jest wprowadzenie kilku zmian w konfiguracji serwera.

Należy otworzyć pli konfiguracji serwera Zabbix (zabbix_server.conf) jako root i odnaleźć następującą linię:

# SSHKeyLocation=

Należy ją odkomentować i ustawić na pełną ścieżkę do katalogu, w którym będą przechowywane klucze prywatne i publiczne:

SSHKeyLocation=/home/zabbix/.ssh

Należy zapisać plik i na koniec uruchomić ponownie zabbix_server.

W tym przypadku /home/zabbix to katalog domowy użytkownika zabbix a .ssh jest podkatalogiem katalogu domowego, do którego komenda ssh-keygen domyślnie generuje klucze prywatny i publiczny.

Zwykle pakiety instalacyjne zabbix-server z różnych dystrybucji OS tworzą konto użytkownika zabbix z katalogiem domowym umieszczonym w innym, mało znanym miejscu (inaczej niż konta systemowe). Na przykład, dla CentOS jest to /var/lib/zabbix, dla Debian'a jest to /var/run/zabbix.

Przed wygenerowaniem kluczy, można przeprowadzić przeniesienie katalogu domowego w lepiej znane miejsce (oczekiwane intuicyjnie). Jest to związane z parametrem konfiguracyjnym serwera Zabbix SSHKeyLocation wspomnianym powyżej.

Kroki te można pominąć jeżeli konto zabbix zostało dodane ręcznie zgodnie z opisem w instalacji, ponieważ w tym przypadku zazwyczaj katalog domowy będzie zlokalizowany w /home/zabbix.

Żeby zmienić ustawienia dla konta użytkownika zabbix, wszystkie działające procesy wykorzystujące je powinny być zatrzymane:

# service zabbix-agent stop
       # service zabbix-server stop

Żeby zmienić lokalizację katalogu domowego z przeniesieniem (jeżeli istnieje), należy wykonać komendę:

# usermod -m -d /home/zabbix zabbix

Całkowicie możliwe jest, że katalog domowy w poprzednim miejscu nie istnieje (na przykład w CentOS), więc powinien być utworzony w nowym miejscu. Bezpiecznym sposobem na zrobienie tego jest:

# test -d /home/zabbix || mkdir /home/zabbix

Żeby się upewnić, że wszystko jest zabezpieczone, można wykonać dodatkowe komendy ustawiające uprawnienia na katalog domowy:

# chown zabbix:zabbix /home/zabbix
       # chmod 700 /home/zabbix

Poprzednio zatrzymane procesy można ponownie uruchomić:

# service zabbix-agent start
       # service zabbix-server start

Teraz można przeprowadzić generowanie kluczy publicznego i prywatnego komendą:

# sudo -u zabbix ssh-keygen -t rsa
       Generating public/private rsa key pair.
       Enter file in which to save the key (/home/zabbix/.ssh/id_rsa): 
       Created directory '/home/zabbix/.ssh'.
       Enter passphrase (empty for no passphrase): 
       Enter same passphrase again: 
       Your identification has been saved in /home/zabbix/.ssh/id_rsa.
       Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
       The key fingerprint is:
       90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
       The key's randomart image is:
       +--[ RSA 2048]----+
       |                 |
       |       .         |
       |      o          |
       | .     o         |
       |+     . S        |
       |.+   o =         |
       |E .   * =        |
       |=o . ..* .       |
       |... oo.o+        |
       +-----------------+

Uwaga: klucze publiczny i prywatny (odpowiednio id_rsa.pub i id_rsa) są generowane domyślnie w katalogu /home/zabbix/.ssh, który odpowiada parametrowi konfiguracyjnemu serwera Zabbix SSHKeyLocation.

9.2.3 Sposób konfiguracji linii komend

Krok ten powinien być przeprowadzony jednorazowo dla każdego hosta, który ma być monitorowany przez testy SSH.

Użycie następującej komendy zainstaluje klucz publiczny na zdalnym hoście 10.10.10.10, dzięki czemu będzie możliwe przeprowadzenie testu SSH z kontem root:

# sudo -u zabbix ssh-copy-id [email protected]
       The authenticity of host '10.10.10.10 (10.10.10.10)' can't be established.
       RSA key fingerprint is 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
       Are you sure you want to continue connecting (yes/no)? yes
       Warning: Permanently added '10.10.10.10' (RSA) to the list of known hosts.
       [email protected]'s password: 
       Now try logging into the machine, with "ssh '[email protected]'", and check in:
         .ssh/authorized_keys
       to make sure we haven't added extra keys that you weren't expecting.

Tera możliwe jest sprawdzenie logowania SSH przy użyciu klucza prywatnego (/home/zabbix/.ssh/id_rsa) dla konta użytkownika zabbix:

# sudo -u zabbix ssh [email protected]

Jeżeli logowanie się powiedzie, to część konfiguracji dla linii komend została ukończona i zdalna sesja SSH może być zamknięta.

9.2.4 Konfiguracja pozycji

Polecenia do wykonania należy umieścić w polu Wykonywany skrypt w konfiguracji pozycji.
Można wykonać wiele poleceń po kolei, umieszczając je w kolejnych liniach. W tym przypadku wartości zwracane również będą formatowane jako wiele linii.

Parametr pozycji Opis Komentarze
Klucz Unikalny klucz pozycji (dla hosta)w formacie ssh.run[<unikalny krótki opis>,<ip>,<port>,<kodowanie>] <unikalny krótki opis> jest wymagany i powinien być unikalny w ramach wszystkich pozycji SSH dla hosta
Domyślnym portem jest 22, a nie port określony w interfejsie, do którego przydzielona jest ta pozycja
Metoda uwierzytelniania Jedno z: "Hasło" lub "Klucz publiczny"
Nazwa użytkownika Nazwa użytkownika do uwierzytelnienia na zdalnym hoście.
Wymagane
Plik klucza publicznego Nazwa pliku klucza publicznego jeżeli wybraną Metodą uwierzytelniania jest "Klucz publiczny". Wymagane Przykład: id_rsa.pub - domyślna nazwa pliku klucza publicznego wygenrowana przez komendę ssh-keygen
Plik zawierający klucz prywatny Nazwa pliku klucza prywatnego jeżeli Metodą uwierzytelniania jest "Klucz publiczny". Wymagane Przykład: id_rsa - domyślna nazwa pliku klucza prywatnego
Hasło lub
Hasło klucza
Hasło uwierzytelniające lub
Hasło klucza jeżeli zostało użyte dla klucza prywatnego
Pole Hasło klucza należy pozostawić puste, jeżeli nie zostało użyte hasło klucza przy jego tworzeniu
Wykonany skrypt Komendy linii poleceń do wykonania przy użyciu zdalnej sesji SSH Przykłady:
date +%s
service mysql-server status
ps aux | grep httpd | wc -l

Wynikowa konfiguracja pozycji powinna wyglądać tak:

Niektóre dystrybucje Linuxa jak Debian, Ubuntu nie wspierają szyfrowanych kluczy prywatnych (z hasłem klucza) jeżeli biblioteka libssh2 była instalowana z pakietów.
Więcej szczegółów można znaleźć w raporcie ZBX-4850

Biblioteka libssh2 może skracać wykonywane skrypty do ~32kB.