As verificações SSH são executadas sem necessitar de agente de monitoração. O Zabbix Agent não é necessário para este tipo de verificação.
Para executar verificações SSH o Zabbix Server deverá ter sido configurado incialmente com o supote ao SSH2.
A versão mínima da biblioteca libssh2 é a 1.0.0.
A autenticação para uma verificação SSH pode ser feita de duas formas: um conjunto de usuário/senha ou um através de um arquivo de chave pública.
Se você não deseja utilizar os arquivos de chave pública, não será necessária nenhuma configuração adicional, além de associar o binário do Zabbix à biblioteca libssh2 duarante sua compilação e configuração.
Para utilizar a autenticação baseada em arquivo de chave públic em itens SSH, serão necessárias algumas modificações no arquivo de configuração do Zabbix Server.
Abra o arquivo de configuração do Zabbix Server (zabbix_server.conf) com o usuário root
e procure pela linha a seguir:
Descomente a linha e adicione o caminho para o diretório onde você irá armazenar as chaves públicas e privadas, conforme exemplo a seguir:
Salve o arquivo e reinicie o zabbix_server.
O caminho apresentado no exemplo "/home/zabbix" é o caminho para o diretório "home" do usuário zabbix no UNIX e o diretório .ssh é o diretório padrão para armazenamento das chaves públicas e privadas (ssh-keygen).
A instalação padrão do Zabbix Server através de pacotes varia entre as distribuições e o diretório "home" do usuário zabbix poderá estar em outros locais (ou ser uma conta de sistema). Por exemplo, no CentOS seria em /var/lib/zabbix, no Debian seria em /var/run/zabbix.
Antes de começar a gerar as chaves, considere a opção de realocar o diretório "home" para um local mais intuitivo. A chave SSHKeyLocation na configuração do Zabbix Server deverá corresponder com esta definição.
Estes passos poderão ser ignorados se a conta do usuário zabbix tiver sido adicionada manualmente de acordo com o definido na seção de instalação pois o diretório "home" já estará no caminho desejado.
Para modificar configurações da conta do usuário zabbix, todos os processos deste usuário deverão ser parados:
Para modificar a localização do diretório "home", junto com a tentativa de mover os arquivos (se existirem) pode ser feita através do comando a seguir:
É possível que o diretório "home" não exista no caminho anterior (no CentOS por exemplo), então ele será criado na nova localização. Um teste pode ser feito com o comando a seguir:
Para garantir que está tudo correto, comandos adicionais poderão ser executados para definir as permissões do novo diretório "home":
Os processos parados anteriormente agora poderão ser iniciados:
Agora podemos gerar as chaves públicas e privadas conforme exemplo a seguir:
# 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+ |
+-----------------+
Nota: as respectivas chaves pública e privada (id_rsa.pub e id_rsa) foram criadas por padrão no diretório /home/zabbix/.ssh que corresponde ao valor configurado no parâmetro SSHKeyLocation do arquivo de configuração do Zabbix Server.
Este passo só precisa ser executado uma vez por host a ser monitorado através de verificações SSH.
Utilizando o comando a seguir, a chave pública será instalada no host remoto 10.10.10.10 e as verificações SSH poderão ser executadas através do usuário 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.
Através do comando a seguir é possível validar se o login SSH está disponível para o usuário zabbix através de suas chaves (/home/zabbix/.ssh/id_rsa):
# sudo -u zabbix ssh [email protected]
Se o login for bem sucedido, a parte de configuração do shell foi finalizada e esta sessão SSH remota pode ser fechada.
O comando a ser executado deverá ser colocado no campo Script executado da configuração do item.
Múltiplos comandos podem ser executados ao separa-los por uma nova linha. Neste caso as respostas também serão devolvidas em múltiplas linhas
Os campos específicos de configuração de itens SSH estão descritos na tabela a seguir:
Parâmetro | Descrição | Comentários |
---|---|---|
Tipo | Selecione Agente SSH aqui. | |
Chave | Identificador único (no host) seguindo o formato ssh.run[<unique short description>,<ip>,<port>,<encoding>] | A porta padrão é a 22, a porta padrão da interface definida no host não será utilizada neste caso. |
Método de autenticação | Selecionar "Senha" ou "Chave pública" | |
Nome do usuário | Nome de usuário para autenticação no host remoto. Obrigatório |
|
Arquivo de chave pública | Nome do arquivo de chave pública se o Método de autenticação para "Chave pública". Obrigatório | Exemplo: id_rsa.pub - arquivo padrão de chave pública criado pelo comando ssh-keygen |
Arquivo de chave privada | Nome do arquivo de chave privada se o Método de autenticação para "Chave privada". Obrigatório | Exemplo: id_rsa - nome padrão do arquivo de chave privada |
Senha ou Chave de acesso |
Senha para autenticar, ou frase de autenticação se for usado arquivo de chave privada |
Deixe o campo Chave de acesso vazio se a frase de autenticação não for utilizada Veja mais em problemas conhecidos sobre as verificações SSH com frase de autenticação |
Script executado | Comando(s) do shell script que deverão ser executados durante a sessão SSH remota | Exemplos: date +%s service mysql-server status ps aux | grep httpd | wc -l |
A bibliotecaa libssh2 poderá truncar scripts superiores a ~32kB.