11 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/zabbix は zabbix ユーザーアカウントのホームディレクトリであり、 .ssh は、デフォルトで公開鍵と秘密鍵が ssh-keygen コマンドによってホームディレクトリ内に生成されるディレクトリです。
通常、さまざまな OS ディストリビューション向けの Zabbix サーバーのインストールパッケージでは、 zabbix ユーザーアカウントのホームディレクトリが別の場所、たとえば /var/lib/zabbix(システムアカウントの場合)に作成されます。
鍵を生成する前に、ホームディレクトリを /home/zabbix に再配置して、
前述の Zabbix サーバー設定パラメータ SSHKeyLocation と
一致させることができます。
installation section の手順に従って 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セッションを閉じることができます。
アイテム設定
実際に実行するコマンドは、アイテム設定の Executed script フィールドに記載する必要があります。 複数のコマンドは、改行して順に実行できます。この場合、返される値も複数行として整形されます。

必須の入力フィールドには、赤いアスタリスクが付いています。
SSH アイテムに必要な特定情報を入力するフィールドは次のとおりです。
| Parameter | Description | Comments |
|---|---|---|
| Type | ここで SSH agent を選択します。 | |
| Key | ssh.run[unique short description,<ip>,<port>,<encoding>,<ssh options>,<subsystem>] 形式の、ホストごとに一意なアイテムキー | unique short description は必須で、各ホストの各 SSH アイテムごとに一意である必要があります。 デフォルトのポートは 22 であり、このアイテムが割り当てられているインターフェースで指定されたポートではありません。 ssh options では、key1=value1;key2=value2,value3 形式で追加の SSH オプションを指定できます。1 つのキーに複数の値を指定する場合はカンマで区切ります(この場合、パラメーターは 引用符で囲む 必要があります)。複数のオプションキーはセミコロンで区切って指定できます。 サポートされるオプションキーは次のとおりです: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes。オプションキーと値のサポートは 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 を使用したネットワーク機器管理)。サブシステムを使用する場合は、Executed script パラメーターで特定のスクリプト構文を使用する必要がある場合もあります。 例: => ssh.run[SFTPBackup,192.0.2.18,,,,sftp]=> ssh.run[Cisco1234,192.0.2.18,,,,netconf] |
| Authentication method | 「Password」または「Public key」のいずれか。 | |
| User name | リモートホストで認証するためのユーザー名(最大 255 文字)。必須。 | |
| Public key file | Authentication method が「Public key」の場合の公開鍵ファイル名。必須。 | 例: id_rsa.pub - コマンド ssh-keygen により生成されるデフォルトの公開鍵ファイル名。 |
| Private key file | Authentication method が「Public key」の場合の秘密鍵ファイル名。必須。 | 例: id_rsa - デフォルトの秘密鍵ファイル名。 |
| Password or Key passphrase |
認証用のパスワード(最大 255 文字)または 秘密鍵で使用していた場合のパスフレーズ。 |
パスフレーズを使用していない場合は、Key passphrase フィールドを空欄にしてください。 パスフレーズの使用に関する 既知の問題 も参照してください。 |
| Executed script | SSH リモートセッションを使用して実行するシェルコマンド。 | 実行されたシェルコマンドの戻り値は 16MB までに制限されます(末尾の空白は切り捨てられます)。データベースの制限 も適用されます。 libssh2 ライブラリでは、実行可能スクリプトが \~32kB に切り詰められる場合があることに注意してください。 例: date +%ssystemctl status mysql-serverps auxww \| grep httpd \| wc -l例(NETCONF サブシステムの場合): <rpc><get-software-information/></rpc>]]>]]><rpc><close-session/></rpc>]]>]]> |