LoginSignup
7
8

More than 5 years have passed since last update.

Rundeck でパスフレーズを使った秘密鍵認証を設定する

Last updated at Posted at 2015-09-15

プロジェクトでジョブスケジューラーが必要になり、噂のRundeckを試してみようと、とりあえず Vagrant 上の CentOS をリモートホストにみたてて Hello World! とか気楽に考えてたら異常にハマったので記念に。

バージョン

Rundeck: rundeck-launcher-2.5.3.jar

ノードの設定

今回は jar ファイル起動でプロジェクト名は「demo」という名前にしてます。設定ファイルは RD_BASE/projects/demo/etc/resources.xml になります。

resources.xml
<node name="node1" description="test node" tags="" osArch="x86_64" osFamily="unix" osName="CentOS" osVersion="6.5" hostname="192.168.28.100" username="vagrant"
  ssh-keypath="/Users/hogemoge/.ssh/id_rsa"
  ssh-authentication="privateKey"
  ssh-password-option="option.sshKeyPassphrase" />

アドホックコマンドでは利用できない

クライアント側の公開鍵をリモート側の authorized_keys に追記してコマンド実行を試してみたんですが、見事に AuthenticationFailure になります。

で、Rundeck ドキュメント(2.5.3)/ ユーザーマニュアル / プラグイン に以下のような記載がありました。

さらに秘密鍵パスフレーズ認証にはいくつかの必要事項と制限があります:

  1. 秘密鍵認証にてパスフレーズを要求するノードには予め定義されたジョブを通してのみ実行が可能です。アドホックコマンドでは実行できません。(今のところ)
  2. そのようなノード上で実行される各ジョブには実行前にパスフレーズを入力してもらうようセキュアオプションの定義がされていなければなりません。
  3. 秘密鍵パスフレーズ認証を使う全てのノードでは入力するパスフレーズと定義されたセキュアオプション定義とがマッチする必要があります。または同じパスフレーズを共有して使う場合は同じ Option 名(またはデフォルトのまま)を使う必要があります。(例えば、同じ秘密鍵を共有して使う場合など)

いやぁ・・・全然気がつきませんでした。正直、ここだけでもかなりの時間を失ったのですが。

  1. 秘密鍵認証にてパスフレーズを要求するノードには予め定義されたジョブを通してのみ実行が可能です。アドホックコマンドでは実行できません。(今のところ)

一応、英語の方ですが、何度も何度も読んでましたよ。理解してんのかっつう話です。

Therefore Private Key Passphrase authentication has several requirements and some limitations:

  1. Private Key-authenticated nodes requiring passphrases can only be executed on via a defined Job, not via Ad-hoc commands (yet).

ジョブの設定

ジョブについてもユーザーマニュアルにいろいろ書かれてますが、XMLしか例がないので GUI でどうしたらいいのか分かりませんでした。

とりあえず、こうします。

スクリーンショット 2015-09-15 22.46.04.png

OptionName は何でもいいんじゃないかと思うんですが、マニュアルに以下のように書かれていて、

オプションの定義 secureInputtrue をセットします。このオプション名(ここでいう secureInput)は自由に決めて構いませんが、ノードの設定でデフォルト値として使われている sshKeyPassphrase を使うのが一番簡単です。

とりあえず何の事か分からないけれど、 sshKeyPassphrase を使うのが一番簡単です って耳元で囁かれたような気がしたので sshKeyPassphrase にしてます。

Input TypeSecure Remote Authentication にして、RequiredYes にします。そーすると、ジョブを実行する際にパスフレーズを入力するトコがイイ感じに出てきます。

スクリーンショット 2015-09-15 22.49.11.png

ここにパスフレーズ打って Run Job Now です!

スクリーンショット 2015-09-15 22.58.26.png

夢にまで見た Succeeded!諦めかけてた COMPLETE 100% です!!
ひゃっほおーーー!!

ちなみにプロジェクトで使用する場合、秘密鍵にパスフレーズは設定しません。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8