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.
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.
Ż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ę:
Należy ją odkomentować i ustawić na pełną ścieżkę do katalogu, w którym będą przechowywane klucze prywatne i publiczne:
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:
Żeby zmienić lokalizację katalogu domowego z przeniesieniem (jeżeli istnieje), należy wykonać komendę:
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:
Żeby się upewnić, że wszystko jest zabezpieczone, można wykonać dodatkowe komendy ustawiające uprawnienia na katalog domowy:
Poprzednio zatrzymane procesy można ponownie uruchomić:
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.
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.
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.