SSHチェックはエージェントレスで実行できます。SSHチェックを行うためにはZabbixエージェントは必要ありません。
SSHチェックを実行するには、Zabbixサーバーを構築時の最初にconfigureする際にSSH2(libssh2またはlibsshで)をサポートするようにする必要があります。以下、参照: 必要な要件.
RHEL 8以降では、libsshだけがサポートされています。
SSHチェックには、ユーザ/パスワードペアとキーファイルベースの2つの認証方法があります。
鍵を使用しない場合、ソースからビルドする場合は、libssh2/libsshをZabbixにリンクする以外に、追加の設定は必要ありません。
SSHアイテムに鍵ベースの認証を使用するためには、サーバーに特定の設定を行うことが必要です。
Zabbixサーバーの設定ファイル(zabbix_server.conf)をroot権限で開き、以下の行を確認します。
コメントを外して、公開鍵と秘密鍵が格納されるフォルダのフルパスを設定します。
ファイルを保存し、その後 zabbix_serverを再起動します。
/home/zabbix ここに zabbix ユーザアカウントのホームディレクトリがあります。*/.ssh は、ホームディレクトリ内でssh-keygen コマンドを使用して公開鍵と秘密鍵を生成するディレクトリです。
通常、様々なOSディストリビューションからのzabbix-serverインストールパッケージでは、あまり知られていない場所(システムアカウントのように)にホームディレクトリを持つzabbixユーザーアカウントを作成します。例えば /var/lib/zabbix) 。
鍵の生成を開始する前に、ホームディレクトリをより良く知られた場所(直感的に予想できる場所)に再配置するアプローチを検討することができます。これは、前述の SSHKeyLocation というZabbix server の設定パラメータに対応します。
ソースコードからのインストールに従って手動で zabbix アカウントを追加した場合、ホームディレクトリが既に /home/zabbix にある可能性が高いため、これらの手順は省略することができます。
zabbix ユーザーアカウントの設定を変更するには、そのアカウントを使用しているすべての作業プロセスを停止する必要があります。
ホームディレクトリの場所を変更するには(存在する場合)、コマンドを実行する必要があります。
古い場所にホームディレクトリが存在しない可能性が十分にあるので、新しい場所に作成する必要があります。そのためには以下のように実行します:
すべてが安全であることを確認するために、追加のコマンドを実行して、ホームディレクトリのパーミッションを設定することができます。
停止していたプロセスを再び起動できるようになります:
これで、公開鍵と秘密鍵を生成する手順を、コマンドで実行できるようになりました:
# 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+ |
+-----------------+
注: 公開鍵と秘密鍵(それぞれ id_rsa.pub と id_rsa) は、デフォルトで Zabbixサーバーの 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 に切り詰める場合があります。