[comment]: # ({26d9bc44-26d9bc44})
# 9 Verificacions SSH

[comment]: # ({/26d9bc44-26d9bc44})

[comment]: # ({a37eff2e-4cdff2c1})
#### Vista general

Les verificacions SSH es fan com a monitoratge sense agent. L'agent Zabbix no cal per fer les verificacions SSH.

Per fer les verificacions SSH, els servidor Zabbix s'ha de [configurar inicialment](/manual/installation/install#from_the_sources) amb el suport SSH2 (libssh2 o libssh). Veieu també: [Requisits previs](/manual/installation/requirements#serverproxy).

::: noteimportant
Només s'admet libssh a partir de RHEL 8. Per altres distribucions, libssh es suggereix per damunt de libssh2.
:::

[comment]: # ({/a37eff2e-4cdff2c1})

[comment]: # ({76b2e481-5d32b87c})
### Configuració

[comment]: # ({/76b2e481-5d32b87c})

[comment]: # ({69e9c4a5-753f5c30})
##### Autenticació per frase de pas

Les verificacions SSH tenen dos mètodes d'autenticació - una parella usuari/mot de pas i un fitxer clau.

Si no teniu pas intenció d'emprar les claus, no cal pas vincular cap altra configuració addicional de la libssh o libssh2 a Zabbix, si instal·leu des dels orígens.

[comment]: # ({/69e9c4a5-753f5c30})

[comment]: # ({8e89bf18-44fd07da})
##### Autenticació d'arxiu de clau

Per emprar una autenticació basada en clau per elements SSH, s'han de fer alguns canvis a la configuració del servidor.

Obriu l'arxiu de configuració del servidor Zabbix ([zabbix\_server.conf](/manual/appendix/config/zabbix_server)) com a `root`, i cerqueu la línia següent:

```ini
# SSHKeyLocation=
```

Traieu-li el comentari i poseu-hi la ruta sencera cap a la carpeta on hi haurà les claus públiques i privades:

```ini
SSHKeyLocation=/home/zabbix/.ssh
```

Deseu l'arxiu i reinicieu el zabbix\_server.

*/home/zabbix* aquest és el directori arrel de l'usuari *zabbix*, i *.ssh* és el directori on s'hi generen per defecte les claus públiques i privades amb la comanda [ssh-keygen](http://en.wikipedia.org/wiki/Ssh-keygen) dins del directori de l'usuari.

Generalment, els paquets d'instal·lació del zabbix-server de diferents distribucions de Sistema Operatiu creen el compte d'usuari *zabbix* amb un directori arrel en un lloc no gaire habitual (com per a comptes del sistema; per exemple, */var/lib/zabbix*).

Abans de generar les claus, estaria bé moure el directori base de l'usuari a un lloc més intuïtiu. Aquest hauria de correspondre amb el paràmetre de configuració *SSHKeyLocation* del servidor Zabbix, tal com s'ha dit més amunt.

::: noteclassic
Les passes poden saltar-se si el compte *zabbix* s'ha afegit manualment d'acord amb la [secció d'instal·lació](/manual/installation/install#create_user_account), doncs en aquest cas el directori base sigui a */home/zabbix*.
:::

Per canviar aquest paràmetre del compte d'usuari *zabbix*, tots els processos que sigui emprant s'han d'aturar:

```bash
service zabbix-agent stop
service zabbix-server stop
```

Per canviar el directori base movent-lo, la comanda hauria d'ésser:

```bash
usermod -m -d /home/zabbix zabbix
```

És possible que el directori base no existeixi al lloc antic, pel que s'hauria de crear a la nova ubicació. Una manera de fer-ho és:

```bash
test -d /home/zabbix || mkdir /home/zabbix
```

Per assegurar-vos que és segur, exxecuteu comandes addicionals per establir els permisos al directori base:

```bash
chown zabbix:zabbix /home/zabbix
chmod 700 /home/zabbix
```

Com hem aturat els processos abans, ara els hauríem d'engegar:

```bash
systemctl start zabbix-agent
systemctl start zabbix-server
```

Ara, les passes per generar les claus públiques i privades es poden fer amb aquesta comand:

```bash
# 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): 
# <enter the 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+        |
+-----------------+
```

:::noteclassic
Nota: les claus públiques i privades (*id\_rsa.pub* i *id\_rsa* respectivament) s'han generat per defecte al directori */home/zabbix/.ssh*, que correspon al paràmetre de configuració *SSHKeyLocation* del servidor Zabbix.
:::

::: noteimportant
Els tipus de claus diferents d'"rsa" es poden admetre per l'eina ssh-keygen i els servidors SSH però no seran suportades per libssh2, que és la que empra el Zabbix.
:::

[comment]: # ({/8e89bf18-44fd07da})

[comment]: # ({b84f1792-7e6b0273})
##### Formulari de configuració de Shell

Aquesta passa només s'ha de fer un cop per cada equip que serà monitorat per les comprovacions SSH.

Mitjançant la ordre següent, el fitxer de claus **públiques** es pot instal·lar en un equip remot *10.10.10.10* de manera que les comprovacions SSH es puguin fer amb un compte *root*:

```bash
# sudo -u zabbix ssh-copy-id root@10.10.10.10
No es pot establir l'autenticitat de l'equip "10.10.10.10 (10.10.10.10)".
L'empremta digital de la clau RSA és 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
Esteu segur que voleu continuar connectant-vos (sí/no)?
#sí
Avís: S'ha afegit permanentment "10.10.10.10" (RSA) a la llista d'equip coneguts.
Mot de pas de root@10.10.10.10:
Ara proveu d'iniciar sessió a la màquina, amb "ssh 'root@10.10.10.10'", i registreu-vos:
     .ssh/authorized_keys
per assegurar-vos que no hem afegit claus addicionals que no esperàveu.
```

Ara és possible comprovar l'inici de sessió SSH mitjançant la clau privada predeterminada (*/home/zabbix/.ssh/id\_rsa*) per al compte d'usuari *zabbix*:

```bash
sudo -u zabbix ssh root@10.10.10.10
```

Si l'inici de sessió té èxit, la part de configuració de l'intèrpret d'ordres s'ha acabat i es pot tancar la sessió SSH remota.

[comment]: # ({/b84f1792-7e6b0273})

[comment]: # ({e7fbcdcc-fe23daa8})
##### Configuració de l'element

Les ordres reals a executar s'han de posar al camp *Script executat* de la configuració de l'element.
Es poden executar diverses ordres una darrere l'altra posant-les en una línia nova. En aquest cas, els valors retornats també es formataran en diverses línies.

![](../../../../../assets/en/manual/config/items/itemtypes/ssh_item.png){width="600"}

Tots els camps d'entrada obligatoris són marcats amb un asterisc vermell.

Els camps que requereixen informació específica per als elements SSH són:

|Paràmetre|Descripció|Comentaris|
|--|-------|------|
|*Tipus*|Trieu aquí **Agent SSH**.| |
|*Clau*|Clau d'element única (per equip) en format **ssh.run\[descripció curta única,<ip>,<port>,<codificació>,<opcions ssh>,<subsistema>\]**|**descripció curta única* és obligatori i ha d'ésser única en tots els elements SSH per equip.<br><br>El port predeterminat és el 22, no pas el port especificat a la interfície a la qual és assignat aquest element.<br><br>**opcions ssh** permet passar opcions SSH addicionals en format *key1=value1;key2=value2,value3*. Es poden passar valors mútiples per una clau separats per comes (en aquest cas, el paràmetre ha d'ésser [comentat](/manual/config/items/item/key#parameter---quoted-string)); claus múltiples d'opció es poden passar separades per punt i coma.<br><br>S'admeten les següents claus d'opcions: `KexAlgorithms`, `HostkeyAlgorithms`, `Ciphers`, `MACs`, `PubkeyAcceptedKeyTypes`. El suport de claus i valors d'opció depèn de la biblioteca SSH; si una opció no és compatible, es retornarà un error i l'element no s'admetrà.<br><br>Tingueu en compte que el signe "+" per afegir configuració de xifrat i "!" per deshabilitar configuració de xifrats específiques (com a GnuTLS i OpenSSL) no s'admeten pas.<br><br>Exemples:<br>=> `ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]`<br>=> `ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]`<br>=> `ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]`<br><br>**subsistema** permet passar un subsistema SSH, limitant la connexió SSH a operacions específiques permeses pel subsistema ( per exemple, transferències de fitxers mitjançant SFTP o gestió de dispositius de xarxa mitjançant NETCONF). Tingueu en compte que l'ús d'un subsistema també pot requerir l'ús d'una sintaxi d'script específica al paràmetre *Script executat*.<br><br>Exemples:<br>=> `ssh.run[SFTPBackup,192.0.2.18,,,,sftp ]`<br>=> `ssh.run[Cisco1234,192.0.2.18,,,,netconf]`|
|*Mètode d'autenticació*|O "Mot de pas" o "Clau pública"| |
|*Nom d'usuari*|Nom de l'usuari que s'ha d'autenticar a l'equip remot. Obligatori| |
|*Fitxer de clau pública*|Nom del fitxer o clau pública si el *Mètode d'autenticació* és "Clau pública". Obligatori|Exemple: *id\_rsa.pub* - per defecte el nom del fitxer de clau pública es genera mitjançant l'ordre [ssh-keygen](http://en.wikipedia.org/wiki/Ssh-keygen)|
|*Fitxer de clau privada*|Nom del fitxer o clau privada si el *Mètode d'autenticació* és "Clau privada". Obligatori|Exemple: *id\_rsa* - nom de fitxer de clau privada predeterminat.|
|*Mot de pas* o<br>*Frase de pas*|Mot de pas per a l'autenticació o<br>Frase de pas **si** s'ha emprat per a la clau privada|Deixeu buit el camp *Frase de pas de la clau* si no s'empra el mot de pas.<br>Consulteu els [problemes coneguts](/manual/installation/known_issues#ssh_checks) sobre l'ús de frases de pas.|
|*script executat*|Comandes d'intèrpret d'ordres executades mitjançant sessió remota SSH|El valor de retorn de la comanda executada és limitat a 16Mo ( return value of the executed shell command(s) is limited to 16MB; així com també apliquen els [límits de bases de dades](/manual/config/items/item#text-data-limits).<br><br>Fixeu-vos que la biblioteca libssh2 pot truncar els scripts executables a \~32 Ko.<br><br>Exemples:<br>*data +%s*<br>*systemctl status mysql-server*<br> *ps auxww \| grep httpd \| wc -l`<br><br>Exemple (per al subsistema NETCONF):<br>`<rpc>`<br>`<get-software-information/>`<br>`</rpc>`<br> `]]>]]>`<br>`<rpc>`<br>`<close-session/>`<br>`</rpc>`<br>`]]>]]>`|

[comment]: # ({/e7fbcdcc-fe23daa8})
