Você está visualizando a documentação da versão de desenvolvimento, que pode estar incompleta.
Esta página inclui conteúdo traduzido automaticamente. Se você notar um erro, selecione-o e pressione Ctrl+Enter para reportá-lo aos editores.

9 Verificações SSH

Visão geral

As verificações SSH são realizadas como monitoramento sem agent. O agent Zabbix não é necessário para verificações SSH.

Para realizar verificações SSH, o server Zabbix deve ser inicialmente configurado com suporte a SSH2 (libssh ou libssh2). Veja também: Requisitos.

A partir do RHEL 8, apenas o libssh é suportado. Para outras distribuições, o libssh é recomendado em vez do 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 a autenticação baseada em chave para items SSH, certas alterações na configuração do server são necessárias.

Abra o arquivo de configuração do Zabbix server (zabbix_server.conf) como root e procure pela seguinte linha:

# SSHKeyLocation=

Descomente-a e defina o caminho completo para a pasta onde as chaves públicas e privadas serão localizadas:

SSHKeyLocation=/home/zabbix/.ssh

Salve o arquivo e reinicie o Zabbix server em seguida.

O caminho /home/zabbix aqui é o diretório home para a conta de usuário zabbix, e .ssh é um diretório onde, por padrão, as chaves públicas e privadas 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 lugar, por exemplo, /var/lib/zabbix (como para contas de sistema).

Antes de gerar as chaves, você pode realocar o diretório home para /home/zabbix, para que ele corresponda ao parâmetro de configuração do Zabbix server SSHKeyLocation mencionado acima.

As etapas a seguir podem ser ignoradas se a conta zabbix foi adicionada manualmente de acordo com a seção de instalação. Nesse caso, o diretório home para a 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 a utilizam devem ser parados:

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 existisse 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 está seguro, comandos adicionais podem ser executados para definir permissões para o diretório home:

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

Os processos parados anteriormente agora podem ser iniciados novamente:

systemctl start zabbix-agent
       systemctl start zabbix-server

Agora, as etapas para gerar as chaves públicas e privadas podem ser realizadas com os seguintes comandos (para melhor legibilidade, os prompts dos comandos estão 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):
       <Deixe em branco>
       # Enter same passphrase again: 
       <Deixe em branco>
       # 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 do Zabbix server SSHKeyLocation.

Tipos de chave diferentes de "rsa" podem ser suportados pela ferramenta ssh-keygen e por servidores SSH, mas podem não ser 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

O(s) comando(s) real(is) a ser(em) executado(s) deve(m) ser colocado(s) no campo Script executado na configuração do item. Vários comandos podem ser executados um após o outro, colocando-os em uma nova linha. Neste caso, os valores retornados também serão formatados como multilinhas.

Todos os campos obrigatórios estão marcados com um asterisco vermelho.

Os campos que requerem informações específicas para itens SSH são:

Parâmetro Descrição Comentários
Tipo Selecione SSH agent aqui.
Chave Chave de item única (por host) no formato ssh.run[descrição curta única,<ip>,<porta>,<codificação>,<opções ssh>,<subsystem>] descrição curta única é obrigatória e deve ser única para cada item SSH por host.

A porta padrão é 22, não a porta especificada na interface à qual este item está atribuído.

opções ssh permitem passar opções SSH adicionais no formato chave1=valor1;chave2=valor2,valor3. Vários valores para uma chave podem ser passados separados por vírgula (neste caso, o parâmetro deve ser 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 é suportada apenas com libssh); se uma opção não for suportada, um erro será retornado e o item se tornará não suportado.

Observe que o sinal "+" para adicionar configurações de cifra e "!" para desabilitar configurações de cifra específicas (como no 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 uma sintaxe de script específica no parâmetro Script executado.

Exemplos:
=> ssh.run[SFTPBackup,192.0.2.18,,,,sftp]
=> ssh.run[Cisco1234,192.0.2.18,,,,netconf]
Método de autenticação Um dos "Senha" ou "Chave pública".
Nome de usuário Nome de usuário (até 255 caracteres) para autenticação no host remoto. Obrigatório.
Arquivo de chave pública Nome do arquivo da chave pública se o Método de autenticação for "Chave pública". Obrigatório. Exemplo: id_rsa.pub - nome padrão do arquivo de chave pública gerado pelo comando ssh-keygen.
Arquivo de chave privada Nome do arquivo da chave privada se o Método de autenticação for "Chave pública". Obrigatório. Exemplo: id_rsa - nome padrão do arquivo de chave privada.
Senha ou
Senha da chave
Senha (até 255 caracteres) para autenticação ou
Senha se ela foi usada para a chave privada.
Deixe o campo Senha da chave vazio se a senha não foi usada.
Veja também problemas conhecidos sobre o uso de senha.
Script executado Comando(s) de shell executado(s) usando sessão remota SSH. O valor de retorno do(s) comando(s) de shell executado(s) é limitado a 16MB (incluindo espaços em branco finais que são truncados); limites do banco de dados também se aplicam.

Observe que a biblioteca libssh2 pode truncar scripts executáveis para ~32kB.

Exemplos:
date +%s
systemctl status mysql-server
ps auxww \| grep httpd \| wc -l

Exemplo (para subsistema NETCONF):
<rpc>
<get-software-information/>
</rpc>
]]>]]>
<rpc>
<close-session/>
</rpc>
]]>]]>