🔐

Github Actions でビルドして Mixhost にデプロイする方法

以前このブログをデプロイする際に利用した Github Actions ですが、久しぶりに利用したところ、SSH認証に手こずったので、方法をまとめておく。

Github Actions の Workflow 設定

ymlファイルなのでインデントに気をつけましょう。
ソースコード:https://github.com/psbss/yuu-blog/blob/master/.github/workflows/build.yml

Mixhost 側で SSH key を生成する

今回作成する SSH Key はコントロールパネルの 「セキュリティ」 → 「SSHアクセス」 からでは作れないので、 「詳細」 → 「Terminal」 から作ります。

Terminal を開いて、コマンドを入力します。

# ディレクトリの移動
cd ~/.ssh
# SSH key の生成
ssh-keygen -t rsa -b 4096

と実行すると、

Enter file in which to save the key (/home/***/.ssh/id_rsa):

と、「鍵どこに保存する?}と聞かれるので、問題なければデフォルトのままEnterを押します。
すると、パスフレーズを聞かれます。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

今回は利用上の問題があるので(セキュリティ的には問題有りますが)パスフレーズを設定せず2回Enterを押して次に進みます。

以上で SSH-Key(秘密鍵・公開鍵) を作れました。

それぞれの鍵の中身を表示するには以下のコードを打って表示します。

# 保存時にSSH-Keyの鍵名を変更してない場合
cat id_rsa # 秘密鍵
cat id_rsa.pub # 公開鍵

Github の Secret に登録する

SSH-Keyの登録では先程用意した公開鍵・秘密鍵を利用します。

Github Actions を動かす対象のリポジトリに移動して 「Settings」 → 「Secret」に移動します。

次に、 「New secret」 を押して以下の情報を入力します


Name: REMOTE_USER Value: Mixhost のログイン名

Name: SSH_KEY Value: 秘密鍵(id_rsa)の中の情報全て

Name: KNOWN_HOSTS Value: 後述


この KNOWN_HOSTS ですが、普通に作ると ssh-rsa 方式で作成されますが、なぜか利用する際には ecdsa-sha2-nistp256 方式になります。

少し厄介なので、自動で作ってもらいます。

KNOWN_HOSTS を作成する

流れ:

  • 秘密鍵をダウンロードして配置する
  • configファイルを作る
  • SSHを実行する
  • known_hosts の中の情報をコピーしてGithubのSecretに登録する

まずは手持ちの端末から Mixhost にSSH接続します。接続できると自動でKNOWN_HOSTSが生成されます。

Mixhost の 「SSHアクセス」より秘密鍵をダウンロードして手持ちの端末の ~/.ssh/に配置します。配置する際は以下のコマンドを実行(Mac / Linux)Windowsの人はWindows SubSystem for Linuxを利用しましょう。

cd Download # ファイルのダウンロード先
mv ./id_rsa ~/.ssh/ ## ファイルを.sshディレクトリにコピー

次に configファイルを作ります。

vim config

vimの使い方はザックリまとめると以下

i で挿入モード
Esc でコマンド入力モード
:wq で保存

続けて入力していく

Host Mixhost # 自由
HostName ***.mixh.jp # ***部分はコントロールパネル横プライマリドメインの部分
User ログイン名
Port 22
IdentityFile ~/.ssh/id_rsa

以上でconfigファイルの設定は完了する。

ssh Mixhost

を実行すると「このハッシュ値で合っているか?」と鍵が改ざんされていないか聞かれるので、問題なければ y を押して進む。正常に認証されると SSHアクセスが可能になる。

といった手順でアクセスができるようになります。

一度アクセスできると ~/.ssh/known_hosts ファイルが自動生成されるので、cat ~/.ssh/known_hostsで中身をコピーします。

これがGithubのSecretに登録する中身です。

Actions を動かす

以上の手順で Actions を動かすための SSH 周りの設定が出来ました

何か詰まった場合はDMへどうぞ

都内で働くiOSエンジニア(3年目)