WordPress プラグインやテーマをカラフルボックス上で運用していて、ローカル → GitHub → サーバへのデプロイを手動 SSH + git pullでやっていると、
だんだん面倒になる。この記事では、
GitHub に push → GitHub Actions からカラフルボックスに SSH → サーバ側で git pull 実行
という流れを構築して、push するだけで自動反映される仕組みを作る。
全体像
構成はシンプルに 2 本の SSH ルートだけ:

- GitHub Actions → カラフルボックス
- デプロイ用:GitHub がサーバにログインする用の鍵(秘密鍵は GitHub、公開鍵はカラフルボックス)
- カラフルボックス → GitHub
- git pull 用:サーバが GitHub からソースを引っ張るための鍵(秘密鍵はサーバ、公開鍵は GitHub アカウント)
図にするとこんな感じ:
- ローカル: 開発 & git push origin main
- GitHub: push をトリガーに Actions が起動
- GitHub Actions: SSH でカラフルボックスに接続
- カラフルボックス: 該当ディレクトリで git pull origin main
前提
- カラフルボックスに SSH でログインできる(ユーザー名 / ポート番号はわかっている)
- 対象のコードは GitHub にある 例)taka/xxxxxxx
- サーバ上には既にクローン済 例)/home/USER/public_html/xxx/wp-content/plugins/xxxxxxx
STEP 1:GitHub Actions → カラフルボックス用の SSH 鍵を作る
まずは「GitHub からサーバに入る用の鍵」を用意する。
1-1. ローカルで秘密鍵ペアを作成
ローカル(Macなど)で実行:
cd ~
ssh-keygen -t ed25519 -C "github-actions-colorfulbox" -f ~/.ssh/github_actions_key- パスフレーズは空でOK(Enter 連打)
- できあがるファイル:
- ~/.ssh/github_actions_key(秘密鍵)
- ~/.ssh/github_actions_key.pub(公開鍵)
1-2. 公開鍵をカラフルボックスに登録
- カラフルボックスの管理画面にログイン
- 「SSHキー管理」的なメニューを開く
- ~/.ssh/github_actions_key.pub の中身を開いてコピー:
cat ~/.ssh/github_actions_key.pub
- カラフルボックス側のフォームに公開鍵を貼り付けて登録
→ これで「この公開鍵に対応する秘密鍵を持っているクライアントはログイン許可」という状態になる。
1-3. 秘密鍵を GitHub Secrets に登録
今度は逆に、GitHub に秘密鍵を持たせる。
- GitHub で対象リポジトリを開く(例:taka/xxxxxxxx)
- Settings → Secrets and variables → Actions
- New repository secret で以下を登録:
- SSH_KEY → ~/.ssh/github_actions_key の中身(BEGIN OPENSSH PRIVATE KEY~END まで全部)
cat ~/.ssh/github_actions_key- SSH_HOST → カラフルボックスのホスト(例:183.xx.xx.xxx or ホスト名)
- SSH_USER → カラフルボックスの SSH ユーザ名(例:xxxxxxxuser)
- SSH_PORT → SSH ポート(例:22)
ここまでで、GitHub Actions → カラフルボックス の準備は完了。
STEP 2:カラフルボックス → GitHub 用の SSH 鍵を作る
次は逆向きのルート。
サーバが GitHub から git pull できなければ意味がない。
2-1. サーバ上で鍵ペア作成
カラフルボックスに SSH ログインして:
ssh USER@HOST -p 22 # ここは自分の環境に合わせるサーバ側で:
cd ~
ssh-keygen -t ed25519 -C "colorfulbox-xxxxx" -f ~/.ssh/id_ed25519_xxxxxx
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519_xxxxxx2-2. 公開鍵を GitHub アカウントの SSH Key として登録
サーバで公開鍵を表示:
cat ~/.ssh/id_ed25519_xxxxxx.pubこれで出る ssh-ed25519 … の 1 行 丸ごとコピー。
GitHub 側で:
- 右上アイコン → Settings
- 左メニュー SSH and GPG keys
- New SSH key
- 入力:
- Title: id_ed25519_xxxxxx
- Key: さっきの公開鍵 1 行
- Add SSH key で保存
※ ここで間違って 「New GPG key」 を押すとエラーになる。
必ず 「SSH keys」セクションの New SSH key を使う。
2-3. サーバから GitHub に SSH できるかテスト
サーバで:
ssh -i ~/.ssh/id_ed25519_xxxxxx -T git@github.com初回は fingerprint 確認が出るので yes。
成功していれば:
Hi taka! You've successfully authenticated, but GitHub does not provide shell access.が出る。
これが出ない(Permission denied)なら、公開鍵の登録先 or コピーミスを疑え。
2-4. ~/.ssh/config を整える
サーバの SSH 設定を一度整理しておく:
cat > ~/.ssh/config << 'EOF'
Host github.com
HostName github.com
User git
IdentityFile /home/USER/.ssh/id_ed25519_xxxxxx
IdentitiesOnly yes
EOF
chmod 600 ~/.ssh/config※ USER は自分のユーザー名に置換(xxxxxuser など)。
これで普通に:
ssh -T git@github.comだけでも上のメッセージが出るようになる。
STEP 3:サーバ側のリポジトリを SSH URL に変更
サーバで対象ディレクトリへ移動:
cd /home/USER/public_html/YOUR-WEBSITE.com/wp-content/plugins/YOUR-PLUGINHTTPS URL になっている場合は、SSH URL に変更する:
git remote -v
# 例)https://github.com/taka/YOUR-REPO.git
git remote set-url origin git@github.com:taka/YOUR-REPO.git
git remote -v
# origin git@github.com:taka/YOUR-REPO.git (fetch/push)最後に手動で git pull が通るか確認:
git pull origin main
# 何も聞かれずに成功すればOKここが手動で成功しない限り、GitHub Actions からやらせても絶対に失敗する。
STEP 4:GitHub Actions の Workflow を作成
GitHub リポジトリに .github/workflows/deploy.yml(名前は任意)を作成。
例:
name: Deploy to ColorfulBox via git pull
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Deploy on server
run: |
ssh -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'EOF'
cd /home/USER/public_html/YOUR-WEBSITE.com/wp-content/plugins/YOUR-PLUGIN
git pull origin main
EOFポイント
- Setup SSH key ステップ
- SSH_KEY Secret の中身(秘密鍵)を ~/.ssh/id_ed25519 として保存
- ssh-keyscan で known_hosts を埋めておき、初回接続の確認を潰す
- Deploy on server ステップ
- Secrets の SSH_USER / SSH_HOST / SSH_PORT を使ってサーバに SSH
- その中で git pull origin main を実行
USER 部分だけ自分のサーバユーザー名に置き換えれば、そのまま動く構成。
STEP 5:動作確認
- ローカルで README などを 1 行変更
- main へ push
- GitHub の Actions タブで Deploy to ColorfulBox via git pull が走っていることを確認
- 成功後、サーバで:
cd /home/USER/public_html/YOUR-WEBSITE.com/wp-content/plugins/YOUR-PLUGIN
git log -1- して、最新コミットが反映されているか確認 or WordPress 側の動作をブラウザで確認
よくハマるポイントと対策
❌ 公開鍵/秘密鍵を逆に入れる
- GitHub Secret SSH_KEY に入れるのは秘密鍵
- GitHub の SSH and GPG keys に登録するのは公開鍵
ここを逆にすると、一生 Permission denied。
❌ GPG key に SSH 公開鍵を入れる
New GPG key に ssh-ed25519 … を貼ると:
We got an error adding your GPG key. Please verify the input is a valid GPG key.
と怒られる。
必ず New SSH key の方に入れる。
❌ ~/.ssh/config に Host github.com を二重定義
SSH は「最初にマッチした Host 定義しか見ない」。
Host github.com が 2 つあると、上側だけ使われる。
意図しない鍵(別プロジェクト用の id_rsa)を掴んで Permission denied になりがち。
1 ブロックだけに整理する。
まとめ
この構成を一度作ってしまえば:
- ローカル:いつものように git push origin main
- GitHub Actions:自動で SSH → サーバで git pull
- サーバ:WordPress プラグイン/テーマが自動更新
という形になる。
カラフルボックス + GitHub で WordPress プロジェクトを回しているなら、
「手で SSH → git pull」やってるのはもう時間の無駄なので、
さっさとこの構成に寄せた方がいいですね。

コメント