SSH agent
Resumen
Las comprobaciones SSH se realizan como supervisión sin agent. No se necesita el agent de Zabbix para las comprobaciones SSH.
Para realizar comprobaciones SSH, el server de Zabbix debe estar inicialmente configurado con compatibilidad SSH2 (libssh o libssh2). Consulte también: Requisitos.
A partir de RHEL 8, solo se admite libssh. Para otras distribuciones, se recomienda libssh en lugar de libssh2.
Configuración
Autenticación por frase de contraseña
Las comprobaciones SSH proporcionan dos métodos de autenticación: un par usuario/contraseña y basado en archivo de clave.
Si no tiene intención de usar claves, no se requiere configuración adicional, además de vincular libssh o libssh2 a Zabbix, si está compilando desde el código fuente.
Autenticación con archivo de clave
Para usar autenticación basada en clave para los items SSH, se requieren ciertos cambios en la configuración del server.
Abra el archivo de configuración del server de Zabbix
(zabbix_server.conf) como root
y busque la siguiente línea:
# SSHKeyLocation=
Descoméntela y establezca la ruta completa a la carpeta donde se ubicarán las claves pública y privada:
SSHKeyLocation=/home/zabbix/.ssh
Guarde el archivo y reinicie el server de Zabbix después.
La ruta /home/zabbix aquí es el directorio personal de la cuenta de usuario zabbix,
y .ssh es un directorio donde, de forma predeterminada, se generarán las claves pública y privada mediante un comando ssh-keygen
dentro del directorio personal.
Por lo general, los paquetes de instalación del server de Zabbix de distintas distribuciones de SO
crean la cuenta de usuario zabbix con un directorio personal en otra ubicación,
por ejemplo, /var/lib/zabbix (como ocurre con las cuentas del sistema).
Antes de generar las claves, podría reasignar el directorio personal
a /home/zabbix, de modo que
coincida con el parámetro de configuración SSHKeyLocation del server de Zabbix
mencionado anteriormente.
Los siguientes pasos se pueden omitir si la cuenta zabbix se ha agregado manualmente
según la sección de instalación.
En tal caso, lo más probable es que el directorio personal de la cuenta zabbix
ya sea /home/zabbix.
Para cambiar el directorio personal de la cuenta de usuario zabbix, deben detenerse todos los procesos en ejecución que lo estén utilizando:
systemctl stop zabbix-agent
systemctl stop zabbix-server
Para cambiar la ubicación del directorio personal con un intento de moverlo (si existe), debe ejecutarse el siguiente comando:
usermod -m -d /home/zabbix zabbix
También es posible que un directorio personal no existiera en la ubicación anterior, por lo que debe crearse en la nueva ubicación. Una forma segura de hacerlo es:
test -d /home/zabbix || mkdir /home/zabbix
Para asegurarse de que todo sea seguro, se pueden ejecutar comandos adicionales para establecer permisos en el directorio personal:
chown zabbix:zabbix /home/zabbix
chmod 700 /home/zabbix
Los procesos detenidos anteriormente ya pueden iniciarse de nuevo:
systemctl start zabbix-agent
systemctl start zabbix-server
Ahora, los pasos para generar las claves pública y privada pueden realizarse con los siguientes comandos (para mayor claridad, los indicadores del comando se han comentado):
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):
/home/zabbix/.ssh/id_rsa
# Enter passphrase (empty for no passphrase):
<Leave empty>
# Enter same passphrase again:
<Leave empty>
# 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+ |
# +-----------------+
Las claves pública y privada (id_rsa.pub e id_rsa)
se han generado de forma predeterminada en el directorio /home/zabbix/.ssh,
que corresponde al parámetro de configuración SSHKeyLocation del server de Zabbix.
Los tipos de clave distintos de "rsa" pueden ser compatibles con la herramienta ssh-keygen y con los servidores SSH, pero es posible que no sean compatibles con libssh2, que es la biblioteca utilizada por Zabbix.
Formulario de configuración de shell
Este paso debe realizarse solo una vez para cada host que vaya a ser monitorizado mediante comprobaciones SSH.
Usando los siguientes comandos, el archivo de clave pública puede instalarse en un host remoto 10.10.10.10, de modo que las comprobaciones SSH puedan realizarse con una cuenta root (para una mejor legibilidad, los prompts de comando se han comentado):
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:
<Enter root password>
# Now try logging into the machine, with "ssh '[email protected]'",
# and check to make sure that only the key(s) you wanted were added.
Ahora es posible comprobar el inicio de sesión SSH usando la clave privada predeterminada
(/home/zabbix/.ssh/id_rsa) para la cuenta de usuario zabbix:
sudo -u zabbix ssh [email protected]
Si el inicio de sesión tiene éxito, entonces la parte de configuración en la shell ha finalizado y la sesión SSH remota puede cerrarse.
Configuración del item
Los comandos reales que se ejecutarán deben colocarse en el campo Executed script de la configuración del item. Se pueden ejecutar varios comandos uno tras otro colocándolos en una nueva línea. En este caso, los valores devueltos también se formatearán en varias líneas.

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.
Los campos que requieren información específica para los items SSH son:
| Parameter | Description | Comments |
|---|---|---|
| Type | Seleccione SSH agent aquí. | |
| Key | Clave de item única (por host) en el formato ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] |
unique short description es obligatoria y debe ser única para cada item SSH por host. El puerto predeterminado es 22, no el puerto especificado en la interfaz a la que está asignado este item. ssh options permite pasar opciones SSH adicionales en el formato key1=value1;key2=value2,value3. Se pueden pasar varios valores para una clave separados por comas (en este caso, el parámetro debe estar entre comillas); varias claves de opción se pueden pasar separadas por punto y coma.Se admiten las siguientes claves de opción: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. La compatibilidad de la clave y el valor de la opción depende de la biblioteca SSH (por ejemplo, PubkeyAcceptedKeyTypes solo es compatible con libssh); si una opción no es compatible, se devolverá un error y el item pasará a no ser compatible.Tenga en cuenta que no se admite el signo "+" para anexar configuraciones de cifrado ni "!" para deshabilitar configuraciones de cifrado específicas (como en GnuTLS y OpenSSL). Ejemplos: => ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]=> ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]=> ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]subsystem permite pasar un subsistema SSH, limitando la conexión SSH a operaciones específicas permitidas por el subsistema (por ejemplo, transferencias de archivos mediante SFTP o administración de dispositivos de red mediante NETCONF). Tenga en cuenta que el uso de un subsistema también puede requerir el uso de una sintaxis de script específica en el parámetro Executed script. Ejemplos: => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | Una de las opciones "Password" o "Public key". | |
| User name | Nombre de usuario (hasta 255 caracteres) para autenticarse en el host remoto. Obligatorio. | |
| Public key file | Nombre de archivo de la clave pública si Authentication method es "Public key". Obligatorio. | Ejemplo: id_rsa.pub - nombre de archivo predeterminado de la clave pública generado por el comando ssh-keygen. |
| Private key file | Nombre de archivo de la clave privada si Authentication method es "Public key". Obligatorio. | Ejemplo: id_rsa - nombre de archivo predeterminado de la clave privada. |
| Password or Key passphrase |
Contraseña (hasta 255 caracteres) para autenticarse o frase de contraseña si se utilizó para la clave privada. |
Deje el campo Key passphrase vacío si no se utilizó una frase de contraseña. Consulte también los problemas conocidos relacionados con el uso de frases de contraseña. |
| Executed script | Comando(s) de shell ejecutado(s) mediante una sesión remota SSH. | El valor devuelto por el/los comando(s) de shell ejecutado(s) está limitado a 16 MB (incluido el espacio en blanco final, que se trunca); también se aplican los límites de la base de datos. Tenga en cuenta que la biblioteca libssh2 puede truncar los scripts ejecutables a \~32 kB. Ejemplos: date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -lEjemplo (para el subsistema NETCONF): <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |