MtSFTPSync
Movable Type の公開ファイルを、
SFTP で Web サーバーへ。
Overview
MT のサイトディレクトリを、
そのまま Web サーバーに同期。
MtSFTPSync は、Movable Type の管理画面に SFTP 同期機能を追加するプラグインです。
MT を動かすサーバーと、サイトを公開する Web サーバーが別になっている構成向けです。MT で再構築したファイルを、SFTP で公開用のサーバーへ転送できます。レンタルサーバーや自社サーバーへの反映を、MT の管理画面から直接、変更したファイルだけに絞って実行できます。
FTP ソフトや独自スクリプトを使わず、SSH 公開鍵認証によるセキュアな転送が可能です。秘密鍵は管理画面に貼り付けるだけで、サーバーへの鍵ファイルの配置やパーミッションの設定は不要です。
Features
機能
同期先をツリー表示
SFTP サーバーのファイルをフォルダツリー形式で確認できます。同期先パスは自動的に展開表示。接続状態も管理画面上でひと目で確認できます。
変更したファイルだけを転送
前回の同期から変わっていないファイル(サイズと更新日時が同期先と同じもの)は転送しません。毎回サイト全体をアップロードし直す必要がなく、2 回目以降の同期は短時間で終わります。
同期先の不要ファイルを削除
同期元に存在しないファイルを同期先から削除する --delete オプションに対応。実行前に確認モーダルを表示し、誤操作を防止します。
同期対象を柔軟に管理
フォルダ・ファイル単位で同期除外パスを設定できます。除外されたアイテムはファイルツリーでグレーアウト表示されます。
MT のサイトログに記録
同期結果(転送・削除・変更なし・エラーの件数)を Movable Type のサイトログに記録。設定で有効にすると、転送したファイルの一覧などの詳しいログをテキストファイルにも書き出します。
設定は管理画面だけで完結
秘密鍵は設定画面に貼り付けるだけ。接続先のホスト鍵も設定画面に表示され、ボタンひとつで登録できます。サーバーでのコマンド操作やファイルの配置は不要です。接続先は MT のサイトごとに設定できます。
Requirements
動作要件
システム要件
- Movable Type ソフトウェア版 8.8 以降
- Perl 5.16 以降
- OpenSSH クライアント(
sshコマンド)を MT の実行ユーザーが実行できるサーバー - MT のサーバーから、接続先の SSH ポート(通常は 22 番)へ外向きに接続できること
※ MT クラウド版での稼働は保証しかねます。
※ パスワード認証には非対応です。
SFTP 要件
- SSH 公開鍵認証が設定済みの Web サーバー
- パスフレーズなしの OpenSSH 形式の秘密鍵(ED25519・RSA・ECDSA)
- 同期先ディレクトリへの書き込み権限
使用 Perl モジュール
外部インストール不要(プラグイン同梱 / Perl コア)
| モジュール | 種別 | 用途 |
|---|---|---|
| Net::SFTP::Foreign | プラグイン同梱(Pure Perl) | SFTP 接続・ファイル転送 |
| Digest::SHA | Perl コア | 鍵のフィンガープリント計算 |
| MIME::Base64 | Perl コア | 秘密鍵・ホスト鍵の読み取り |
| Digest::MD5 | Perl コア | ログファイル名の生成 |
| JSON::PP | Perl コア | AJAX レスポンス JSON 生成 |
| Encode | Perl コア | 文字エンコーディング処理 |
| POSIX | Perl コア | ログファイル日付処理 |
Disclaimer
免責事項
- 無保証
- 本プラグインは現状有姿(as-is)で提供されます。動作の正確性・完全性・特定目的への適合性について、いかなる保証も行いません。
- 免責
- 本プラグインの使用または使用不能によって生じた損害(データの損失・業務上の損失等を含む)について、Ethan Technology Japan 株式会社は一切の責任を負いません。
- 自己責任
- 本プラグインのインストール・設定・運用はすべて利用者自身の責任で行ってください。本番環境への適用前に、必ず検証環境でのテストを実施してください。
- サポート
- 本プラグインに対する技術サポート・バグ修正・アップデートの提供は保証しません。お問い合わせにはできる限り対応しますが、回答をお約束するものではありません。
- 変更・配布
- 自身の環境での改変は自由です。第三者への再配布・サブライセンスはご遠慮ください。
Setup & Usage
初期設定と使い方
1. インストール
- プラグインファイルを MT の
plugins/ディレクトリに配置 - MT 管理画面 システム → プラグイン を開く
- MtSFTPSync が一覧に表示されていれば完了
※ 同期ログを使用する場合は、plugins/MtSFTPSync/logs/ ディレクトリに MT の実行ユーザーが書き込めるようにしてください。
2. SSH 公開鍵認証の準備
- 手元の PC などで、この同期専用の SSH 鍵ペアを作成(例:
ssh-keygen -t ed25519 -f mtsftp-sync)。パスフレーズを聞かれたら、何も入力せずに Enter を押します - 公開鍵(
.pub)を接続先サーバーの~/.ssh/authorized_keysに登録 - 秘密鍵は、次の「4. SFTP 設定」で設定画面に貼り付けます(サーバーへの鍵ファイルの配置やパーミッションの設定は不要)
※ 使用できるのは OpenSSH 形式(-----BEGIN OPENSSH PRIVATE KEY----- で始まるもの)の鍵です。古い形式(-----BEGIN RSA PRIVATE KEY----- など)の鍵は、鍵ファイルのコピーに対して ssh-keygen -p -m RFC4716 -f 鍵ファイル を実行すると変換できます(新しいパスフレーズを聞かれたら、何も入力せずに Enter)。
※ 秘密鍵は MT のデータベースに保存されます。この同期専用の鍵を作成し、接続先の SFTP ユーザーの権限は同期先ディレクトリへの書き込みに限定することをおすすめします。
3. MT ロールと権限
システム管理者は自動的に両権限を持ちます。一般ユーザーには システム → ロール で付与してください。
| 権限 | 対象機能 | 備考 |
|---|---|---|
| SFTPSyncの設定 | SFTP設定・ファイルリスト | 「サイト管理者」「設定の変更」と連動 |
| SFTPSyncによる同期 | SFTP同期実行 | 「サイト管理者」と連動 |
4. SFTP 設定
SFTPSync → SFTP設定 を開き、以下の項目を入力して保存します。
| 項目 | 説明 |
|---|---|
| SFTP ホスト | 接続先サーバーのホスト名または IPv4 アドレス |
| ポート番号 | SFTP ポート番号(デフォルト: 22) |
| ユーザー名 | SFTP ユーザー名 |
| 秘密鍵 | 秘密鍵ファイルの内容を貼り付け。保存後は表示されず、フィンガープリントと公開鍵のみ表示されます |
| 同期先パス | 接続先サーバー上の同期先ディレクトリ(絶対パス) |
| 同期元ディレクトリ | 省略するとサイトディレクトリを使用 |
| 同期対象除外パス | ファイル名またはディレクトリ名を指定(ディレクトリは末尾に / を付ける)。同期処理の対象から除外されます。同期先にだけ置いているファイル(.htaccess や .well-known/ など)は、ここに指定しておくと削除されません。 |
| 同期ログ | 有効にするとテキストログを出力 |
5. ホスト鍵の登録
ホスト鍵は、接続先が本物のサーバーであることを確かめるための鍵です。登録したホスト鍵と一致しないサーバーには接続しません。
- SFTP ホストとポート番号を保存すると、設定画面の上部に このサーバーのホスト鍵(
SHA256:...)が表示されます - 接続先のサーバー管理者やレンタルサーバーのマニュアルでフィンガープリントが公開されている場合は、一致することを確認します
- この鍵を信頼して登録する をクリックすると登録完了
※ ホスト名かポート番号を変更すると、登録済みのホスト鍵は消えます。改めて登録してください。
6. SFTP 同期の実行
- 左メニューの SFTPSync → SFTP同期 を開く
- 内容を確認して 同期実行 をクリック
- 確認モーダルで 実行する をクリックすると同期開始
- 同期先にあって同期元にないファイルを削除する を有効にすると不要ファイルを削除(警告ダイアログあり)
7. 同期結果の確認
- 左メニューの SFTPSync → 同期先ファイルリスト で同期先のファイルをツリー確認
- 同期結果(upload / delete / unchanged / error 件数)は MT サイトログ に記録
- ログ出力が有効な場合は
logs/logfile_blog{ID}_YYYYMM_***.txtにも書き出し
FAQ
よくある質問
- 再構築のたびに自動で SFTP 同期されますか?
- 自動同期には対応していません。再構築後、管理画面の SFTP 同期から手動で実行してください。
- 削除オプションを使うと、意図しないファイルまで削除される心配はありますか?
- 同期元ディレクトリに存在しないファイルのみが削除対象になります。実行前に確認ダイアログが表示されますので、内容をご確認の上で実行してください。別途、同期の対象からはずして触らないようにする、除外パスも設定できます。また、同期先や同期元のファイル一覧を正しく取得できなかった場合は、削除を行いません。なお、
.htaccessなどの隠しファイルも同期・削除の対象です。同期先にだけ置いている隠しファイルは、除外パスに指定してください。 - 接続できない場合、どこを確認すればよいですか?
- 設定(ホスト名・ポート・ユーザー名・秘密鍵)と、ホスト鍵が登録されているかをご確認ください。ホスト鍵を取得できない場合は、MT のサーバーから接続先への外向きの通信が許可されているかもご確認ください。公開鍵認証が失敗している場合は、サーバー側のログを確認する必要があることもございます。
- 「ホスト鍵が登録済みのホスト鍵と一致しない」と表示されました。
- 接続先のホスト鍵が変わったため、安全のため同期を中止しています。サーバーの移転・再構築などに心当たりがある場合は、SFTP設定画面で新しい鍵を確認し、新しい鍵を信頼して登録する をクリックしてください。心当たりがない場合は、なりすましの可能性があるため登録せず、サーバーの管理者にご確認ください。
- 秘密鍵を貼り付けると「OpenSSH 形式の秘密鍵のみ使用できます」と表示されます。
- 古い形式(
-----BEGIN RSA PRIVATE KEY-----などで始まるもの)の鍵です。鍵ファイルのコピーに対してssh-keygen -p -m RFC4716 -f 鍵ファイルを実行すると OpenSSH 形式に変換できます(新しいパスフレーズを聞かれたら、何も入力せずに Enter)。パスフレーズ付きの鍵は使用できません。 - MT の各サイトで、それぞれ別の接続先を設定できますか?
- はい。MT のサイトごとに設定が可能です。
- レンタルサーバー(さくら、エックスサーバーなど)でも使えますか?
- SSH 接続が許可されていれば使えます。ご利用のサーバーで SSH 公開鍵認証が利用可能かどうかは、各サービスの仕様をご確認ください。
- ポート番号は 22 番以外でも使えますか?
- はい。SFTP設定でポート番号を指定できます。
- 不具合を見つけた場合はどうすればいいですか?
- お問い合わせフォームよりご連絡ください。対応をお約束するものではありませんが、内容を確認しできる限り対応いたします。