ここまでの記事で書いてきた自動化スクリプト (scripts/publish_article.py / scripts/setup_contact_form_7.py / scripts/setup_swell_basic.py …) は、すべて ssh xserver-aishacho 1コマンドでパスフレーズ入力なしに接続できる という前提に依存しています。
この前提を作るのに、Windows だと地味に詰まりやすいポイントが 3 つあります:
- ssh-agent (Windows サービス) が起動していない
- 鍵をパスフレーズ付きで生成すると毎回入力を求められる
~/.ssh/configのHostエイリアスが有効化されていない
この記事では、Windows 11 + OpenSSH 8.x で ssh xserver-aishacho 一発接続を作るところまでを コマンド実行ログ付き で書きます。所要 15分 です。
目次
- なぜ ssh-agent 永続化が効くのか
- XServer 側で SSH を有効化する (UI 操作)
- Windows OpenSSH のインストール確認
- ssh-agent をサービス化する
- 鍵を生成して XServer に登録
~/.ssh/configで Host エイリアスを定義- ハマりポイント 3つ
- WP-CLI Python から呼び出すときの確認
1. なぜ ssh-agent 永続化が効くのか
ssh-agent は 秘密鍵をメモリに常駐させて、SSH 接続時に自動で渡す 仕組みです。これが効いていれば:
- パスフレーズ入力は 1セッションで 1回だけ (起動直後の
ssh-add時のみ) - それ以降は
ssh xserver-aishachoがプロンプトなしで通る - Python の
subprocess.run(["ssh", ...])も同様に通る
逆にこれを効かせないと、Python から SSH を叩くたびにパスフレーズプロンプトが出て自動化が止まります。Bash 経由ではプロンプトに答える術がない (TTY が無い) ので、ssh-agent が必須です。
2. XServer 側で SSH を有効化する (UI 操作)
XServer のサーバーパネル (https://www.xserver.ne.jp/login_server.php) → 「SSH 設定」 → 「ON にする」 を選ぶ。これだけで XServer 側の SSH ポート (10022) が開きます。
| 項目 | 値 |
|---|---|
| ポート | 10022 (固定) |
| ユーザー名 | サーバーアカウント (例: xs123456) |
| ホスト名 | サーバー番号 (例: sv1234.xserver.jp) |
サーバーアカウントとホスト名はサーバーパネルの「アカウント情報」で確認できます。これを後で ~/.ssh/config に記述します。
3. Windows OpenSSH のインストール確認
Windows 11 はデフォルトで OpenSSH クライアントが入っているはずですが、念のため確認:
PS> ssh -V
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
入っていなければ「設定」 → 「アプリ」 → 「オプション機能」 → 「OpenSSH クライアント」を追加します。
4. ssh-agent をサービス化する
Windows の OpenSSH 標準で ssh-agent サービスが入っていますが、デフォルトでは無効化されています。管理者権限の PowerShell で:
PS> Get-Service ssh-agent | Select-Object Status, StartType
Status StartType
------ ---------
Stopped Disabled
PS> Set-Service -Name ssh-agent -StartupType Automatic
PS> Start-Service ssh-agent
PS> Get-Service ssh-agent
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
Automatic に変更したことで、Windows 起動時に自動で ssh-agent が走る 状態になりました。これが永続化の本体です。
5. 鍵を生成して XServer に登録
鍵生成
PS> ssh-keygen -t ed25519 -C "xserver-aishacho" -f $HOME\.ssh\xserver_aishacho_ed25519
Enter passphrase (empty for no passphrase): ********
Enter same passphrase again: ********
パスフレーズは付ける前提です (鍵流出時の保険)。ssh-agent があるので、毎回入力する必要はない からです。
ssh-agent に鍵を登録
PS> ssh-add $HOME\.ssh\xserver_aishacho_ed25519
Enter passphrase for C:\Users\user\.ssh\xserver_aishacho_ed25519: ********
Identity added: C:\Users\user\.ssh\xserver_aishacho_ed25519 (xserver-aishacho)
ここで入力したパスフレーズは ssh-agent の中に保持されます。Windows を再起動するまで再入力なし。
XServer に公開鍵を登録
公開鍵 (*.pub の中身) をクリップボードにコピー:
PS> Get-Content $HOME\.ssh\xserver_aishacho_ed25519.pub | clip
XServer サーバーパネル → 「SSH 設定」 → 「公開鍵登録・更新」 にペーストして登録。
6. ~/.ssh/config で Host エイリアスを定義
接続コマンドを毎回書くのは面倒なので、~/.ssh/config にエイリアスを書きます:
Host xserver-aishacho
HostName sv1234.xserver.jp
Port 10022
User xs123456
IdentityFile ~/.ssh/xserver_aishacho_ed25519
ServerAliveInterval 60
ServerAliveInterval 60 は地味に重要で、長時間アイドル接続でもタイムアウトしません。Python のスクリプトが連続実行で複数回 SSH するときに繋ぎ直しコストを減らせます。
接続テスト:
PS> ssh xserver-aishacho "echo OK from $(hostname)"
OK from sv1234.xserver.jp
パスフレーズプロンプトが出ずに OK が返ってきたら成功です。
7. ハマりポイント 3つ
7-1. ssh-agent サービスが Disabled のまま
Set-Service -StartupType Automatic を忘れて、Start-Service だけ実行すると、再起動後に元に戻ります。Automatic 設定が永続化の核。
7-2. PowerShell 経由は OK、Git Bash 経由は NG
Windows OpenSSH の ssh-agent は、PowerShell / cmd / Windows ネイティブツールから使われる前提。Git Bash や WSL2 から ssh を呼ぶと、別系統の ssh-agent (msys2 系 or WSL系) になり鍵が見えません。
私は Claude Code の PowerShell ツール経由なら ssh-agent が効く・Bash ツール経由は効かない という二重環境問題に当たりました。SSH をスクリプトから呼ぶときは PowerShell 経由を選んでいます。
7-3. ~/.ssh/config のパーミッション
Windows でも .ssh ディレクトリと config のパーミッションが緩いと OpenSSH に拒否されます。icacls で自分のユーザーだけアクセス可能に絞っておくと安心:
PS> icacls $HOME\.ssh\config /inheritance:r /grant "${env:USERNAME}:F"
8. WP-CLI Python から呼び出すときの確認
最後に、Python の subprocess から SSH が通ることを確認します:
import subprocess
r = subprocess.run(
["ssh", "xserver-aishacho", "wp option get blogname"],
capture_output=True, text=True, encoding="utf-8",
)
print(r.stdout) # AIしゃちょ。
これが通れば、scripts/setup_contact_form_7.py も scripts/setup_swell_basic.py もすべて動きます。
まとめ
ssh-agent の永続化は、見えない自動化の土台です。一度組んでしまえば、PC 再起動後も ssh xserver-aishacho がプロンプトなしで通る状態が続くため、その上に積み重ねる WP-CLI 自動化スクリプトがすべて素直に動きます。
所要 15分・PC 再起動含めて 1回切りの設定 で、以降の作業時間を毎日数十分単位で削れる投資です。
次に読むおすすめ
- Claude Code を YouTube・X で2ヶ月独学した僕が、AI×ソロ起業ブログを立ち上げた初日ログ (2026年版)
- Contact Form 7 を Python + WP-CLI で 5分で自動設置する手順 (2026年版)
- SWELL カスタマイズの WP-CLI + Python 自動化 (2026年版)
CTA
X 会社アカウントをフォロー: @ai_shacho_jp — 自動化スクリプト・実装ログを毎日投稿しています。
