Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

9 SSH チェック

概要

SSHチェックは agent レス監視として実行されます。SSHチェックを行う場合、Zabbix agent は必要ありません。

SSHチェックを行うには、SSH2をサポートしたZabbixサーバの初期設定(/manual/installation/install#from_the_sources)が
必要です(libsh2 or libssh)。Requirements も参照してください。

RHEL/CentOS 8 からは libssh のみがサポートされます。

設定

パスフレーズ認証

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

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

キーファイル認証

SSHアイテムにキーベース認証を使用するためには、server の設定に一定の変更が必要です。

Zabbixサーバの設定ファイル(zabbix_server.conf)をrootで開き、以下の行を確認します。

# SSHKeyLocation=

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

SSHKeyLocation=/home/zabbix/.ssh

ファイルを保存し、その後 zabbix_server を再起動します。

/home/zabbix ここに zabbix ユーザアカウントのホームディレクトリがあります。
*/.ssh は、ホームディレクトリ内でssh-keygen コマンドを使用して公開鍵と秘密鍵を
生成するディレクトリです。

通常、異なるOSディストリビューションのzabbix server のインストールパッケージでは、
zabbixユーザのホームディレクトリがあまり知られていない場所(例えば /var/lib/zabbix) に作成されます。
(システムアカウントと同じです)

鍵の生成を開始する前に、ホームディレクトリをより良く知られた場所(直感的に予想できる場所)に
再配置するアプローチを検討することができます。これは、前述の SSHKeyLocation というZabbix server の
設定パラメータに対応します。

installation sectionに従って手動で zabbix アカウントを追加した場合、
ホームディレクトリが既に /home/zabbix にある可能性が高いため、これらの手順は省略することができます。

zabbix ユーザーアカウントの設定を変更するには、そのアカウントを使用しているすべての作業プロセスを停止する必要があります。

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

ホームディレクトリの場所を変更するには(存在する場合)、コマンドを実行する必要があります。

# usermod -m -d /home/zabbix zabbix

古い場所(例えばCentOSの場合)にはホームディレクトリが存在しない可能性が絶対にあるので、
新しい場所で作成する必要があります。そのための安全な試みとしては

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

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

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

停止していたプロセスを再び起動できるようになります。

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

これで、公開鍵と秘密鍵を生成する手順を、コマンドで実行できるようになりました:

# 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 [email protected]
       The key's randomart image is:
       +--[ RSA 2048]----+
       |                 |
       |       .         |
       |      o          |
       | .     o         |
       |+     . S        |
       |.+   o =         |
       |E .   * =        |
       |=o . ..* .       |
       |... oo.o+        |
       +-----------------+

注: 公開鍵と秘密鍵(それぞれ id_rsa.pubid_rsa) は、デフォルトで Zabbix server の SSHKeyLocation 設定パラメータに
対応する /home/zabbix/.ssh ディレクトリに生成されています。

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

シェル設定フォーム

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

次のコマンドを使用して、public 鍵ファイルをリモートホスト 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: 
       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.

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

# sudo -u zabbix ssh [email protected]

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

アイテム設定

実行する実際のコマンドは、アイテム設定の 実行するスクリプト フィールドに記載する必要があります。

複数のコマンドを実行するには、複数行にコマンドを記載することで実行できます。 この場合、返される値も複数行としてフォーマットされます。

すべての必須入力フィールドには赤いアスタリスクが付いています。

SSH アイテムの特定の情報を必要とするフィールドは次のとおりです。

パラメータ 説明 コメント
タイプ SSHエージェントを選択
キー (ホストごとに) 一意なアイテム キーフォーマット ssh.run[<unique short description>,<ip>,<port>,<encoding>] <unique short description> は必須であり、ホストごとにすべての SSH アイテムに対して一意である必要があります
デフォルト ポートは 22 であり、このアイテムが割り当てられているインターフェイスで指定されたポートではありません
認証方法 "パスワード"または"公開鍵"のいずれか
ユーザー名 リモート ホストで認証するユーザー名
必須
公開鍵ファイル 認証方式が"公開鍵"の場合の公開鍵ファイル名。必須 例: id_rsa.pub - ssh-keygenコマンドによって生成されるデフォルトの公開鍵ファイル名
秘密鍵ファイル 認証方式が"公開鍵"の場合の秘密鍵ファイル名。 必須 例: id_rsa - デフォルトの秘密鍵ファイル名
パスワード 認証するためのパスワードまたはパスフレーズ 秘密鍵に使用された場合 パスフレーズが使用されていない場合は、パスワードフィールドを空にします
パスフレーズの使用については既知の問題も参照してください
実行するスクリプト SSH リモート セッションを使用してシェル コマンドを実行します 例:
date +%s
service mysql-server status
ps auxww | grep httpd | wc -l

libssh2 ライブラリは、実行可能スクリプトを ~32kB に切り詰める場合があります。