公開鍵認証を使ってssh接続をする

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 接続を行うことができます。

TOP