9 SSH チェック

概要

SSHチェックは、エージェントレス監視として実行されます。SSHチェックにはZabbixエージェントは必要ありません。

SSHチェックを実行するには、Zabbixサーバーを最初にSSH2サポート(libsshまたはlibssh2)で構成する必要があります。詳細は要件も参照してください。

RHEL 8以降では、libsshのみがサポートされています。他のディストリビューションでは、libssh2よりもlibsshの使用を推奨します。

設定

パスフレーズ認証

SSHチェックは、ユーザー/パスワードのペアとキーファイルベースの2つの認証方法を提供します。

キーを使用しない場合は、ソースからビルドする場合にlibsshまたはlibssh2をZabbixにリンクする以外に、追加の設定は必要ありません。

キーファイル認証

SSHアイテムでキーベースの認証を使用するには、サーバーの設定にいくつかの変更が必要です。

Zabbixサーバーの設定ファイル(zabbix_server.conf)をrootとして開き、次の行を探します。

# SSHKeyLocation=

コメントを外し、公開鍵と秘密鍵が配置されるフォルダへのフルパスを設定します。

SSHKeyLocation=/home/zabbix/.ssh

ファイルを保存し、その後Zabbixサーバーを再起動します。

ここでの/home/zabbixzabbixユーザーアカウントのホームディレクトリであり、.sshはデフォルトで公開鍵と秘密鍵がssh-keygenコマンドによってホームディレクトリ内に生成されるディレクトリです。

通常、さまざまなOSディストリビューションからのZabbixサーバーのインストールパッケージは、zabbixユーザーアカウントを別の場所(たとえば、システムアカウント用の/var/lib/zabbix)にホームディレクトリを作成します。

鍵を生成する前に、ホームディレクトリを/home/zabbixに再割り当てして、上記のZabbixサーバー設定パラメータSSHKeyLocationと一致させることができます。

インストールセクション](/manual/installation/install/sources#create_user_account)に従ってzabbixアカウントが手動で追加されている場合、以下の手順はスキップできます。その場合、zabbixアカウントのホームディレクトリはすでに/home/zabbixである可能性が高いです。

zabbixユーザーアカウントのホームディレクトリを変更するには、それを使用しているすべてのワーキングプロセスを停止する必要があります。

systemctl stop zabbix-agent
systemctl stop zabbix-server

ホームディレクトリの場所を変更し、存在する場合は移動を試みるには、次のコマンドを実行します。

usermod -m -d /home/zabbix zabbix

古い場所にホームディレクトリが存在しなかった場合は、新しい場所に作成する必要があります。安全な試みとしては次のとおりです。

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

すべてが安全であることを確認するために、ホームディレクトリのパーミッションを設定する追加のコマンドを実行できます。

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

以前に停止したプロセスを再度開始できます。

systemctl start zabbix-agent
systemctl start zabbix-server

次のコマンドで公開鍵と秘密鍵を生成する手順を実行できます(可読性を高めるため、コマンドプロンプトはコメントアウトされています)。

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+        |
# +-----------------+

公開鍵と秘密鍵(id_rsa.pubおよびid_rsa)は、デフォルトで/home/zabbix/.sshディレクトリに生成されており、これはZabbixサーバーのSSHKeyLocation設定パラメータに対応しています。

"rsa"以外の鍵タイプはssh-keygenツールやSSHサーバーでサポートされている場合がありますが、Zabbixで使用されているlibssh2ではサポートされていない場合があります。

シェル設定フォーム

この手順は、SSHチェックで監視される各ホストごとに1回だけ実行する必要があります。

以下のコマンドを使用して、公開鍵ファイルをリモートホスト 10.10.10.10 にインストールできます。これにより、root アカウントでSSHチェックを実行できるようになります(可読性を高めるため、コマンドプロンプトはコメントアウトされています)。

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.

これで、zabbix ユーザーアカウントのデフォルトの秘密鍵(/home/zabbix/.ssh/id_rsa)を使用してSSHログインを確認できるようになります。

sudo -u zabbix ssh [email protected]

ログインが成功した場合、シェルでの設定は完了し、リモートSSHセッションを閉じることができます。

アイテムの設定

実際に実行されるコマンドは、アイテム設定の実行スクリプトフィールドに入力する必要があります。 複数のコマンドを実行する場合は、それぞれ新しい行に記述します。この場合、返される値も複数行でフォーマットされます。

必須入力フィールドは赤いアスタリスクでマークされています。

SSHアイテムに特有の情報が必要なフィールドは以下の通りです。

パラメータ 説明 コメント
タイプ ここでSSHエージェントを選択します。
キー ssh.run[一意の短い説明,<ip>,<port>,<encoding>,<ssh options>,<subsystem>]の形式での(ホストごとに一意な)アイテムキー 一意の短い説明は必須であり、ホストごとに各SSHアイテムで一意である必要があります。

デフォルトのポートは22であり、このアイテムが割り当てられているインターフェースで指定されたポートではありません。

ssh optionsは、key1=value1;key2=value2,value3の形式で追加のSSHオプションを渡すことができます。1つのキーに複数の値をカンマ区切りで渡すことができ(この場合、パラメータは引用符で囲む必要があります);複数のオプションキーはセミコロンで区切って渡すことができます。

サポートされているオプションキーは次の通りです:KexAlgorithmsHostkeyAlgorithmsCiphersMACsPubkeyAcceptedKeyTypes。オプションキーと値のサポートはSSHライブラリによって異なります(例えば、PubkeyAcceptedKeyTypesはlibsshでのみサポートされます);オプションがサポートされていない場合はエラーが返され、アイテムはサポート対象外になります。

暗号設定の追加のための"+"記号や、特定の暗号設定を無効にするための"!"記号(GnuTLSやOpenSSLのような)はサポートされていないことに注意してください。

例:
=> 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はSSHサブシステムを渡すことができ、SSH接続をサブシステムで許可された特定の操作(例:SFTPによるファイル転送やNETCONFによるネットワーク機器管理)に制限します。サブシステムを使用する場合、実行スクリプトパラメータで特定のスクリプト構文を使用する必要がある場合があることに注意してください。

例:
=> ssh.run[SFTPBackup,192.0.2.18,,,,sftp]
=> ssh.run[Cisco1234,192.0.2.18,,,,netconf]
認証方法 "パスワード"または"公開鍵"のいずれか。
ユーザー名 リモートホストで認証するためのユーザー名(最大255文字)。必須。
公開鍵ファイル 認証方法が"公開鍵"の場合の公開鍵ファイル名。必須。 例:id_rsa.pub - コマンドssh-keygenで生成されるデフォルトの公開鍵ファイル名。
秘密鍵ファイル 認証方法が"公開鍵"の場合の秘密鍵ファイル名。必須。 例:id_rsa - デフォルトの秘密鍵ファイル名。
パスワードまたは
鍵パスフレーズ
認証のためのパスワード(最大255文字)または
秘密鍵にパスフレーズを使用した場合のパスフレーズ。
パスフレーズを使用しなかった場合は鍵パスフレーズフィールドを空欄にしてください。
パスフレーズの使用に関する既知の問題も参照してください。
実行スクリプト SSHリモートセッションで実行されるシェルコマンド。 実行されたシェルコマンドの戻り値は16MBに制限されます(末尾の空白も含み、切り捨てられます);データベースの制限も適用されます。

libssh2ライブラリでは、実行可能なスクリプトが約32kBに切り捨てられる場合があることに注意してください。

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

例(NETCONFサブシステムの場合):
<rpc>
<get-software-information/>
</rpc>
]]>]]>
<rpc>
<close-session/>
</rpc>
]]>]]>