Kompira Enterprise からリモートサーバーに接続してコマンドを投入する場合には、ssh という手法を用います。この際、ID/パスワード認証以外に公開鍵認証を利用することができます。
本稿では、Kompira Enterprise から公開鍵認証を用いて ssh 接続を行うための設定方法をご紹介します。
※ 本稿は Kompira Enterprise 1.6系に準拠した画像を用いています。
動作確認環境
本稿は、以下の環境で検証しています。
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.5.5.post7 |
OS | CentOS 7.8.2003 |
または
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.6.2.post4 |
OS | CentOS 8.2.2004 |
または
ソフトウェア | バージョン |
---|---|
Kompira Enterprise | 1.6.8 |
OS | CentOS Stream 8 |
また、リモートサーバーとしては CentOS 7.8 および CentOS 8.2 、CentOS Stream 8 、Ubuntu 18.04 LTS で動作確認を行っております。
※ 本稿におけるリモートサーバー上のシェルコマンド例は、CentOS Stream 8 のものを用いています。
証明書の作成
まずは、ローカルマシン上で、証明書ファイルを以下のように ssh-keygen コマンドを使って作成してください。
$ ssh-keygen -f kompira.key Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): (パスフレーズを入力) Enter same passphrase again: (パスフレーズを再入力) Your identification has been saved in kompira.key. Your public key has been saved in kompira.key.pub.
上記の例では以下の2つのファイルが作成されます。
- kompira.key (秘密鍵)
- kompira.key.pub (公開鍵)
リモートサーバーでの証明書の登録
まず、作成したファイルのうち、公開鍵をリモートサーバーに転送・登録します。
具体的には、以下のコマンドをローカルマシンから実行することで、リモートサーバーに公開鍵が転送され、登録されます。
$ ssh-copy-id -i ~/.ssh/kompira.key.pub [リモートユーザー]@[リモートサーバーのホスト名]
※ ssh-copy-id コマンドがお使いのローカルマシンに入っていない場合は、インストールするようお願い致します。
また、ディレクトリ/ファイルの権限について、他のアカウントからアクセス出来ないようにするために、以下のコマンドをリモートサーバー上で実行します。 ( 権限設定が弱いと通信を試みる途中で停止する場合があります。)
$ chmod 700 .ssh $ chmod 600 ~/.ssh/authorized_keys
Kompira Enterprise ジョブフローでの利用
下のキャプチャ画像は、Kompira Enterprise の「アカウント情報」型オブジェクトの作成例です。
作成に伴い、注意すべき点は以下の4点です。
- 「ユーザー名」に適切なリモートサーバーアカウントの指定
- 「パスワード」は、今回は公開鍵認証で ssh 接続するため不要
- 「SSH 鍵ファイル」は、ローカルマシン上で作成した秘密鍵を指定
- 「SSH 鍵パスフレーズ」は、証明書を作成時に指定したパスフレーズを入力 (「パスワード」に記載がある場合は省略可)
sudo パスワードと ssh 鍵パスフレーズが異なる環境の場合は、「パスワード」に sudo パスワードを、「SSH 鍵フレーズ」にパスフレーズを入力してください。
ノード情報は以下のように作成します。IP アドレスとアカウントの指定は最低限行ってください。
※以下の画像は Kompira Enterprise バージョン 1.6.8 時点のものです。他のバージョンでは項目が異なることがあります
アカウント情報とノード情報オブジェクトの作成方法がよくわからない方は、「[事前準備] 接続先のサーバを登録する」を参考にしてください。
※ お使いの環境によっては、リモートサーバー側で公開鍵認証が許可されていない場合があります。その場合、リモートサーバー上における sshd_config の PubkeyAuthentication が yes となっているかご確認ください。
最後にジョブフローですが、例えば以下のように書くことができます。
| __node__ = ./CentOS | ["hostname"]
ここでは、CentOS で設定したサーバ (リモートサーバー) 上での “hostname” コマンドの実行結果を表示しています。
このように Kompira Enterprise からは ID/パスワード認証だけでなく、公開鍵を利用した ssh 接続を行うことができます。