# - \#9 Verificações SSH

#### - Visão geral

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](/pt/manual/installation/install#from_the_sources) com o
supote ao SSH2. 

::: noteimportant
A versão mínima da biblioteca
libssh2 é a 1.0.0.
:::

#### - Configuração

##### - Senha

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.

##### - Autenticação por arquivo de chave pública

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](/pt/manual/appendix/config/zabbix_server)) com o
usuário `root` e procure pela linha a seguir:

    # SSHKeyLocation=

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:

    SSHKeyLocation=/home/zabbix/.ssh

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)](http://en.wikipedia.org/wiki/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](/pt/manual/installation/install#create_user_account) 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:

    # service zabbix-agent stop
    # service zabbix-server stop

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:

    # usermod -m -d /home/zabbix zabbix

É 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:

    # test -d /home/zabbix || mkdir /home/zabbix

Para garantir que está tudo correto, comandos adicionais poderão ser
executados para definir as permissões do novo diretório "home":

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

Os processos parados anteriormente agora poderão ser iniciados:

    # service zabbix-agent start
    # service zabbix-server start

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.

##### - Configuração do Shell

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 root@10.10.10.10
    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.
    root@10.10.10.10's password: 
    Now try logging into the machine, with "ssh 'root@10.10.10.10'", 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 root@10.10.10.10

Se o login for bem sucedido, a parte de configuração do shell foi
finalizada e esta sessão SSH remota pode ser fechada.

##### - Configuração do item

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

![](../../../../../assets/en/manual/config/items/itemtypes/ssh_item.png)

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.<br>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](http://en.wikipedia.org/wiki/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<br>*Chave de acesso*|Senha para autenticar, ou<br>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<br>Veja mais em [problemas conhecidos](/pt/manual/installation/known_issues#ssh_checks) 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:<br>*date +%s*<br>*service mysql-server status*<br>*ps aux \| grep httpd \| wc -l*|

::: noteimportant
A bibliotecaa libssh2 poderá truncar scripts
superiores a \~32kB.
:::
