0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Actions で Xserver に SSH接続できなかった話と解決方法【appleboy/ssh-action】

Last updated at Posted at 2025-06-12

GitHub Actions で Xserver に SSH接続できなかった話と解決方法【appleboy/ssh-action】

はじめに

GitHub Actions を使って Xserver に自動デプロイしたい!
でも何度やっても SSH 接続が通らず… かなり沼りました。
同じように悩む方のために、原因と解決方法を共有します。

問題

以下の構成で GitHub Actions を使って自動デプロイしようとしていました。

GitHub リポジトリ → push
GitHub Actions(appleboy/ssh-action)で Xserver に SSH 接続

サーバ側はGitHub Actionsで git pull を自動実行

ですが、何度やっても 接続エラー が発生しました。

エラー例

ssh: handshake failed: ssh: unable to authenticate
ssh: handshake failed: EOF
ssh.ParsePrivateKey: ssh: this private key is passphrase protected

原因

1. Xserver のSSH接続制限

Xserver は初期状態で 国内IPアドレスからの接続のみ許可 になっているため、
GitHub Actions(海外のサーバー)からのSSH接続がブロックされていました。

2. 鍵のビット数不足&形式不一致?

最初に作ったSSH鍵が

ssh-keygen -t rsa

のように作成したものだったため、

ビット数が少ない(2048bit以下)

PEM形式でない(appleboyのSSHアクションはPEM形式を推奨)

という問題もあったかもしれない。。。
こちらは検証できていないのでわからない

解決方法

Xserver側の設定変更!

Xserverのサーバーパネルから:

SSH設定 → 「国外IPからの接続も許可」に変更

スクリーンショット 2025-06-13 0.05.44.png

※セキュリティ的に必要であれば、一時的に変更後、自動化確認が済んだら元に戻す運用もあり。

SSH鍵の再作成(強度&形式)

ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/xserver_deploy

-m PEM: Appleboy/ssh-action に必要

-b 4096: 推奨強度

-f: ファイル名

秘密鍵をGitHubのSecret(例: XSERVER_SSH_KEY)に登録
公開鍵をXserverのSSH設定に登録

GitHub Actions の設定例

コードはこちらのブログを参考に
https://zenn.dev/joh_luck/articles/6e0d029bd6a33a

cd /home/ユーザーID/ドメイン名/public_html/の箇所はプロジェクトのディレクトリに合わせてください。
yaml

name: Release to Develop Environment
on:
  push:
    branches:
      - develop
      
jobs:
  job1:
    name: Deploy
    runs-on: ubuntu-latest
    steps:
      - name: ssh and deploy
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.SSH_PORT }}
          script: |
            cd /home/ユーザーID/ドメイン名/public_html/
            git checkout develop
            git pull origin develop

最終的に成功したログ

pgsql

Already on 'develop'
Your branch is ahead of 'origin/develop' by 4 commits.
From github.com:username/repo
 * branch            develop    -> FETCH_HEAD
Updating 564002a..cd095b6
Fast-forward
 index.html | 1 +
 1 file changed, 1 insertion(+)
 ✅ Successfully executed commands to all hosts.

まとめ

トラブル 解決策
接続できない SSH制限を「国外OK」に
それでもダメなら秘密鍵エラー -m PEM -b 4096で作成
Secretsで認識されない 改行・最終行に注意して貼り付け

おわりに

ここまで読んでいただきありがとうございます!
もし同じような構成で詰まった方の参考になれば嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?