1

Icinga2サーバーを構成していて、 check_by_sshプラグインを使用して外部マシンでローカル スクリプトを実行したいのですが、奇妙な問題が発生しました。数時間答えを探しましたが、運がありません。

私のコマンドオブジェクトは次のようになります。

object CheckCommand "check_procs" {
        import "by_ssh"
        vars.by_ssh_logname = "root"
        vars.by_ssh_port = "22"
        vars.by_ssh_command = "/tmp/test.sh"
        vars.by_ssh_identity = "/etc/icinga2/conf.d/services/id_rsa.pub"
        vars.by_ssh_ipv4 = "true"
        vars.by_ssh_quiet = "true"
}

の内容test.shは単純exit 0です。Icinga ボックスと、コマンドを実行しているリモート マシンとの間に信頼関係があります。

シェル経由でコマンドを実行すると、機能します

[root@icinga ~]# ssh root@10.10.10.1 -C "/tmp/test.sh"
[root@icinga ~]# echo $?
0

しかし、サーバーによって実行されると、Icingaweb2に次の出力が表示されます。

不明 - check_by_ssh: リモート コマンド '/tmp/test.sh' がステータス 255 を返しました

touch successスクリプトが実行されるかどうかを確認するために、 toスクリプトを追加しましたtest.shが、実行されていないようです。つまり、Icinga がスクリプトを実行すると、スクリプトを実行する前に失敗します。

それが何であるかの手がかりはありますか?オンラインでも、check_by_sshIcinga2 を使用した例はあまりありません。

注: Icinga は root ユーザーを使用してリモート サーバーを識別します。これがベストプラクティスではないことはわかっていますが、これは開発環境です。

更新:私は問題を発見したと思います。問題は、root ユーザーを使用してリモート マシンにログインしようとしていることです。公開鍵認証を使用しても、これはサポートされていません。スクリプトはユーザーで実行する必要がありますicinga

2 回目の更新: 動作するようになりました。問題はキー認証、icinga がユーザー icinga を使用してコマンドを実行するという事実 (by_ssh_logname 属性を使用している場合でも)、および追加vars.by_ssh_options = "StrictHostKeyChecking no"

4

2 に答える 2

1

問題が見つかりましたが、私の場合はほとんどありませんでした。

  1. Icinga はicinga、私が-l root. したがって、ssh キーをインストールするには、ユーザーで実行ssh-copy-id icinga@HOSTする必要がありましたroot(Icinga シェルは /sbin/nologin に設定されています)。
  2. 次に、アプリケーションからアクセスできるように、秘密鍵 (これも root ユーザーのもの) を icinga フォルダーにコピーし、ファイルの所有権を変更しました。
  3. 次に、icingaユーザーを使用してリモートマシンにログインしようとしましたsudo -u icinga ssh icinga@HOST -i id_rsa
  4. ステップ 3 が失敗した場合は、続行する前にそれを把握する必要があります。次に行ったのはStrictHostKeyChecking no、モジュール オプションへの追加です。

出来上がり、これで動作します。

于 2017-08-15T08:32:22.877 に答える