ビルド中に SSH を使用する方法

プロジェクトではビルド中に別のマシンへの接続が必要になることがあります。 たとえば、SSH を使用してリモートマシンにあるデプロイスクリプトを起動する場合です。

その方法を学習しましょう。

SSH を使用する理由

セキュアシェル(SSH)はセキュリティ、汎用性、および効率に優れているため、さまざまな目的で広く使用されています。 SSH を使用する理由には以下が挙げられます。

  • 安全な通信。 SSH は安全でないネットワーク(インターネットなど)の通信を暗号化することで、転送中のデータの機密性と整合性を確保します。
  • 認証。 SSH は公開鍵暗号化によってユーザー認証を行うため、パスワードを使用する認証よりも安全な代替手段として使用できます。 これにより、不正アクセスから保護することができます。
  • リモートアクセス。 SSH はコマンドラインインターフェースを提供したり(SCP や SFTP などのツールを使用した)ファイル転送を可能にしたりするため、ユーザーはリモートサーバーまたはリモートマシンに安全にアクセスできます。
  • トンネリング。 SSH は任意のネットワーク接続を転送するための安全なトンネルを構築し、リモートネットワークのデータベースまたはウェブサーバーなどのサービスに安全にアクセスする手段を提供します。
  • 鍵の管理。 SSH は SSH 鍵の使用をサポートしているため、認証時のセキュリティを単純化し、強化することができます。 また、鍵ペアによってアクセスを管理することもできます。

TeamCity で SSH 鍵をアップロードする方法

Edit configuration(構成の編集)| Build Steps(ビルドステップ)に移動し、ビルドステップをざっと確認します。

tutorials-img

デプロイを実行するコマンドラインのビルドステップを追加したいとしましょう。 これを行うには、TeamCity からリモートサーバーに SSH 接続し、そのサーバーで Amazon S3 からファイルをダウンロードして実行するといったいくつかのコマンドを実行しなければなりません。 SSH 接続を機能させるには、SSH 鍵を指定する必要があります。

tutorials-img

SSH 鍵がビルドエージェントのイメージにあらかじめベイクされていない場合、それをどのようにしてビルドエージェントに送信するのか?という疑問がここで生じます。

What we want to do is to get rid of the command line build step. To do that, click on the Runner type drop-down menu. そこには SSH ExecSSH Upload の 2 つのオプションがあります。

SSH Exec is convenient for when you want to execute something on a remote machine. SSH Upload はファイルをサーバーへ安全にアップロードするのに役立ちます。

SSH Exec オプションを選択し、ランナーのターゲットとコマンドを追加します。

tutorials-img

Authentication method(認証方法)には、SSH 鍵の発行元を選択するオプションがいくつかあります。

tutorials-img

Uploaded key: The key is uploaded to the TeamCity server. サーバーはこの鍵を暗号化してビルド用のビルドエージェントに送信し、ビルドが完了したら削除します。

Default private key(デフォルトの秘密鍵)と Custom private key(カスタム秘密鍵): このオプションはデフォルトの秘密鍵がビルドエージェントの決まった場所に事前にインストールされている場合に選択します。

ユーザー名とパスワードの組み合わせを選択したり、実行中の SSH エージェントを使用したりすることもできます。 SSH Exec の詳細については、ドキュメントをご覧ください。

このチュートリアルでは、Uploaded key(アップロードした鍵)オプションを使用します。 ユーザー名に teamcity-deploy を設定し、パスフレーズの設定を省略します。 次に、SSH 鍵をアップロードします。

tutorials-img

SSH 鍵をアップロードするには、Buildpipelines project(Buildpipelines プロジェクト)| SSH Keys(SSH 鍵)に移動します。 その後、サーバーの秘密鍵を選択します。 Upload SSH Key(SSH 鍵のアップロード)をクリックし、コンピューター上のファイルを選択します。

tutorials-img

その後は Build steps(ビルドステップ)| SSH Exec に戻り、アップロードしたばかりの秘密鍵を選択します。 Save(保存)を押してビルドを実行します。

tutorials-img

ビルドの実行が完了した後に Build Log(ビルドログ)を開くと、SSH Exec ビルドステップの出力を確認できます。 ここでは、ビルドステップ構成に入力したコマンドを TeamCity が実行したことを確認できます。 echo ‘running deploy.sh...’ コマンドの結果も表示されます。

tutorials-img

以上です!