11 SSH agent
Visão geral
As verificações SSH são realizadas como monitoramento sem agent. O Zabbix agent não é necessário para verificações SSH.
Para realizar verificações SSH, o Zabbix server deve ser inicialmente configurado com suporte a SSH2 (libssh ou libssh2). Veja também: Requisitos.
A partir do RHEL 8, apenas libssh é suportado. Para outras distribuições, recomenda-se libssh em vez de libssh2.
Configuração
Autenticação por frase secreta
As verificações SSH fornecem dois métodos de autenticação - um par usuário/senha e baseado em arquivo de chave.
Se você não pretende usar chaves, nenhuma configuração adicional é necessária, além de vincular libssh ou libssh2 ao Zabbix, se você estiver compilando a partir do código-fonte.
Autenticação por arquivo de chave
Para usar autenticação baseada em chave para itens SSH, são necessárias algumas alterações na configuração do server.
Abra o arquivo de configuração do Zabbix server
(zabbix_server.conf) como root
e procure a seguinte linha:
# SSHKeyLocation=
Descomente-a e defina o caminho completo para a pasta onde as chaves pública e privada serão armazenadas:
SSHKeyLocation=/home/zabbix/.ssh
Salve o arquivo e reinicie o Zabbix server em seguida.
O caminho /home/zabbix aqui é o diretório home da conta de usuário zabbix, e .ssh é um diretório onde, por padrão, as chaves pública e privada serão geradas por um comando ssh-keygen dentro do diretório home.
Normalmente, os pacotes de instalação do Zabbix server de diferentes distribuições de SO criam a conta de usuário zabbix com um diretório home em outro local, por exemplo, /var/lib/zabbix (como ocorre com contas de sistema).
Antes de gerar as chaves, você pode realocar o diretório home para /home/zabbix,
de modo que ele corresponda ao parâmetro de configuração SSHKeyLocation do Zabbix server
mencionado acima.
As etapas a seguir podem ser ignoradas se a conta zabbix tiver sido adicionada manualmente de acordo com a seção de instalação. Nesse caso, o diretório home da conta zabbix provavelmente já é /home/zabbix.
Para alterar o diretório home da conta de usuário zabbix, todos os processos em execução que o estejam usando precisam ser interrompidos:
systemctl stop zabbix-agent
systemctl stop zabbix-server
Para alterar o local do diretório home com uma tentativa de movê-lo (se ele existir), o seguinte comando deve ser executado:
usermod -m -d /home/zabbix zabbix
Também é possível que um diretório home não exista no local antigo, então ele deve ser criado no novo local. Uma tentativa segura de fazer isso é:
test -d /home/zabbix || mkdir /home/zabbix
Para garantir que tudo esteja seguro, comandos adicionais podem ser executados para definir permissões no diretório home:
chown zabbix:zabbix /home/zabbix
chmod 700 /home/zabbix
Os processos interrompidos anteriormente agora podem ser iniciados novamente:
systemctl start zabbix-agent
systemctl start zabbix-server
Agora, as etapas para gerar as chaves pública e privada podem ser executadas com os seguintes comandos (para melhor legibilidade, os prompts de comando foram comentados):
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+ |
# +-----------------+
As chaves pública e privada (id_rsa.pub e id_rsa)
foram geradas por padrão no diretório /home/zabbix/.ssh,
que corresponde ao parâmetro de configuração SSHKeyLocation do Zabbix server.
Tipos de chave diferentes de "rsa" podem ser suportados pela ferramenta ssh-keygen e por servidores SSH, mas talvez não sejam suportados pela libssh2 usada pelo Zabbix.
Formulário de configuração do Shell
Esta etapa deve ser executada apenas uma vez para cada host que será monitorado por verificações SSH.
Usando os seguintes comandos, o arquivo de chave pública pode ser instalado em um host remoto 10.10.10.10, para que as verificações SSH possam ser realizadas com uma conta root (para melhor legibilidade, os prompts de comando estão comentados):
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.
Agora é possível verificar o login SSH usando a chave privada padrão (/home/zabbix/.ssh/id_rsa) para a conta de usuário zabbix:
sudo -u zabbix ssh [email protected]
Se o login for bem-sucedido, a parte de configuração no shell estará concluída e a sessão SSH remota pode ser encerrada.
Configuração do item
Os comandos reais a serem executados devem ser colocados no campo Executed script na configuração do item. Vários comandos podem ser executados um após o outro, colocando-os em uma nova linha. Nesse caso, os valores retornados também serão formatados em várias linhas.

Todos os campos de entrada obrigatórios são marcados com um asterisco vermelho.
Os campos que exigem informações específicas para itens SSH são:
| Parameter | Description | Comments |
|---|---|---|
| Type | Selecione SSH agent aqui. | |
| Key | Chave de item exclusiva (por host) no formato ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] | unique short description é obrigatório e deve ser exclusivo para cada item SSH por host. A porta padrão é 22, não a porta especificada na interface à qual este item está atribuído. ssh options permite passar opções SSH adicionais no formato key1=value1;key2=value2,value3. Vários valores para uma chave podem ser passados separados por vírgula (nesse caso, o parâmetro deve estar entre aspas); várias chaves de opção podem ser passadas separadas por ponto e vírgula. As seguintes chaves de opção são suportadas: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. O suporte à chave e ao valor da opção depende da biblioteca SSH (por exemplo, PubkeyAcceptedKeyTypes é suportado apenas com libssh); se uma opção não for suportada, um erro será retornado e o item ficará sem suporte.Observe que o sinal "+" para acrescentar configurações de cifra e "!" para desativar configurações específicas de cifra (como em GnuTLS e OpenSSL) não são suportados. Exemplos: => 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 passar um subsistema SSH, limitando a conexão SSH a operações específicas permitidas pelo subsistema (por exemplo, transferências de arquivos usando SFTP ou gerenciamento de dispositivos de rede usando NETCONF). Observe que o uso de um subsistema também pode exigir o uso de sintaxe específica de script no parâmetro Executed script. Exemplos: => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | Uma das opções "Password" ou "Public key". | |
| User name | Nome de usuário (até 255 caracteres) para autenticação no host remoto. Obrigatório. | |
| Public key file | Nome do arquivo da chave pública se Authentication method for "Public key". Obrigatório. | Exemplo: id_rsa.pub - nome padrão do arquivo de chave pública gerado por um comando ssh-keygen. |
| Private key file | Nome do arquivo da chave privada se Authentication method for "Public key". Obrigatório. | Exemplo: id_rsa - nome padrão do arquivo de chave privada. |
| Password or Key passphrase |
Senha (até 255 caracteres) para autenticação ou Passphrase se ela tiver sido usada para a chave privada. |
Deixe o campo Key passphrase em branco se a passphrase não tiver sido usada. Consulte também os known issues sobre o uso de passphrase. |
| Executed script | Comando(s) de shell executado(s) usando uma sessão remota SSH. | O valor de retorno do(s) comando(s) de shell executado(s) é limitado a 16 MB (incluindo espaços em branco finais que são truncados); database limits também se aplicam. Observe que a biblioteca libssh2 pode truncar scripts executáveis para \~32 kB. Exemplos: date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -lExemplo (para o subsistema NETCONF): <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |