WordPressに対して何かしらファイルをアップロードしたい場合などがあるかと思いますが、ファイルをアップロードする1つの手段としてSFTP接続する方法があります。
ただ、私もそうでしたが「SFTPの設定するのが大変そう。。」とか「SFTPのソフトを入れなきゃいけないのがちょっと。。」という思いがあったりして、あまり手を出しづらい部分がありました。
しかし、やってみると意外と簡単で、しかもFTPのソフトをインストールしなくてもFTP接続できる方法もあったのでそのやり方をまとめてみました。
私はXserverを利用しているので、この記事ではXserverでのやり方を紹介していきます。
2つのSFTP接続方法
今回は以下の2つの接続方法を紹介していきます。
- 1.SFTP用のクライアントソフトを入れて接続させる方法
- 2.windows端末などで既に存在するsftpコマンドを利用して接続させる方法
特に2番目のやり方はSFTPクライアントソフトをインストールしないで実行する方法ですので是非試してみてください。
共通する設定
SFTPクライアントソフトを入れる方法も、入れない方法もXserver側でSFTP接続のための準備をする必要がありますので、その準備から実施していきます。
また、以下のXserver側での設定は、セキュリティの観点から、作業が終わったとき/作業を中断するときには元に戻しておくことをお勧めします。
※念のためという意味合いが強いですが、ここは意識しながら設定をするようにしてください。
1.Xサーバパネルから「FTPのIP制限」の設定を変更する
この設定を入れることで特定のIPアドレスからSFTPを接続することを許可します。
・Xserverのサーバーパネルから「FTP制限設定」をクリックします。

・ドメインの選択画面が出てくるので、メインで利用しているサイトのドメインを選択します。

・「FTP接続許可IPアドレス追加」のタブをクリックして、許可するIPアドレスの情報を入力したら確認画面へ進みます。
※今回私は別の端末から接続させたかったので「現在のIPアドレスを追加する」ではなく、「任意のIPアドレスを追加する」を選択しています。
自分の端末からアクセスさせる場合は「現在のIPアドレスを追加する」でよいと思います。

・確認画面でIPアドレスを確認したら「追加する」をクリックします。

・「FTP接続許可IPアドレスの追加が完了しました」と出てきたら設定完了です。

2.SSH設定を有効化して秘密鍵ファイルをダウンロードする
続いて、XserverのSSH設定を有効化して、SFTP接続の際に必要となる認証鍵をダウンロードします。
・Xserverのサーバーパネルから「SSH設定」をクリックします。

・SSH設定画面が開くので「ONにする」にチェックを入れて「設定する」をクリックします。

・「SSH設定の変更を完了しました」と表示されたら変更完了です。

・続いて「公開鍵認証用鍵ペアの生成」のタブをクリックして、パスフレーズを入力し、確認画面へ進みます。

ここで入力したパスフレーズは今後SFTP接続を実施する際に何度も利用するので覚えておいてください。
※万が一忘れてしまった場合にはここで再度パスフレーズを設定しなおすことで、やり直すことができますのでご安心を。
・確認画面で「生成する」をクリックします。

・「公開鍵認証用の鍵ペア生成処理を実行しました。」と表示され、秘密鍵ファイルがダウンロードされたら完了です。

以下のようにダウンロードフォルダに「[自分のXserverのサーバID.key」というファイルがダウンロードされていることも確認してください。
※設定によっては拡張子まで表示されていないかもしれません。

3.秘密鍵ファイルの名前を変更して.sshフォルダに格納する
先ほどダウンロードした.keyファイルのファイル名を変更して、.sshフォルダに格納します。
その前にファイルの拡張子や隠しフォルダが表示されるようにエクスプローラーの設定を変更します。
・ダウンロードフォルダに移動してから、「表示」をクリックして「ファイル名拡張子」と「隠しファイル」にチェックを入れます。

すると、ファイルの拡張子まで表示されるようになります。
・「サーバ名.key」ファイルのファイル名をコピーし、1つを「id_rsa」という名前に、もう一つを拡張子「.ppk」というファイル名に変更します。
拡張子ごと変更する点に注意してください。
また、拡張子ごと変更するときに「本当に拡張子変更しますか?」といったような確認画面が出てきますが、それも構わず「OK」を選択して変更してください。

・「id_rsa」ファイルを「C:\User\[ユーザ名]\.ssh」のフォルダに格納します。
もし「.ssh」のフォルダがない場合には新しくフォルダを作成してください。

これでSFTP接続するための事前準備が完了しました。
4-1.SFTP用のクライアントソフトを入れて接続させる方法
①SFTPクライアントソフト「FileZilla」をインストールする
今回は「FileZilla」と呼ばれるSTFPクライアントソフトを利用します。
・公式のダウンロードサイトにアクセスし、「Download FileZilla Client」をクリックします。

・再度「Download FileZilla Client」をクリックします。
※今回はWindows端末を利用しているのでここをクリックでOKです。

・ダウンロードされたらファイルを起動して「FileZilla」インストールします。

インストール時のオプションの選択などは基本的にデフォルト値を使用する形でよいと思います。
※私はそのように設定しました。
②「FileZilla」を利用してファイルをアップロードする
・「FileZilla」を起動して、右上のアイコンをクリックし、サイトマネージャーを開きます。

・左側の「新しいサイト」をクリックして、右側のパラメータを入力し、「接続」をクリックします。
- プロトコル:SFTP
- ホスト:svXXXXXX.xserver.jp(Xserverのサーバー番号) ※サーバパネルで確認できます
- ポート:10022
- ログオンタイプ:鍵ファイル
- ユーザー:xsXXXXXX(XserverのサーバーID) ※サーバパネルで確認できます
- 鍵ファイル:[参照]をクリックして「C:\User\[ユーザ名]\.ssh」にある.ppkのファイルを選択

※鍵ファイルの参照をクリックして、既存のppkファイルを選択した際に、以下のような画面が出てくることがあります。

その場合、案内通りにパスフレーズを入力し、別名のファイルとしてppkファイルを再作成して選択すればOKです。


・「接続」クリック後、パスフレーズの入力を求められるので入力します。
※クライアントソフトのバージョンによってはこれが表示されるまでに1,2個ポップアップがでるかもしれませんが任意の選択肢で構いません。

・「FileZilla」のTOPページ戻り、「・・・のディレクトリリストの表示成功」と表示され、右側にリモートサイトのディレクトリが表示されればSTFP接続が成功しています。

・右側のリモートサイトのディレクトリを適切なディレクトに移動させ、左側のローカルサイトにあるから移動したいファイルをドラッグアンドドロップで右側に移動させます。
今回は「cocoon-child-master」のフォルダに「test.txt」というファイルをアップロードしました。

これにて、ファイルアップロードの完了です。
参考までに、ファイルの削除は右クリックから「削除」を選択することで削除可能です。

4-2.windows端末などで既に存在するsftpコマンドを利用して接続させる方法
①コマンドプロンプトを開いてsftp接続する
・以下のコマンドを入力してsftpで接続します。
#sftpで接続
sftp -i C:\Users\[ユーザ名]\.ssh\id_rsa -o Port=10022 xsXXXXXX@svXXXXXX.xserver.jp
- [ユーザ名]には、id_rsaを配置した自分の端末のユーザ名を入力してください。
- xsXXXXXXにはサーバパネルで確認できる「サーバーID」を入力してください
- svXXXXXXにはサーバパネルで確認できる「サーバー番号」を入力してください。
・上記入力後、「本当に接続しますか?」と確認が出てくるため「yes」と入力します

・設定したパスフレーズを入力すると、sftpにて接続でき、コマンドも「sftp>」という表記に変わります。

これでSFTPで接続している状態になりました。
②sftpコマンドを利用してファイルをアップロードする
・以下のコマンドを順番に入力してファイルをアップロードします。
今回は「cocoon-child-master」のフォルダに「test.txt」というファイルをアップロードします。
#ディレクトリを移動する
cd [自分のサイトのドメイン名]\public_html\wp-content\themes\cocoon-child-master
#現在いるディレクトリの場所を確認する
pwd
#ディレクトリ内のファイルを確認する(test.txtがないことを確認)
ls -l
#ファイルをサイト側のディレクトリにアップロードする
put C:\Users\[ユーザ名]\desktop\test.txt
#ディレクトリ内のファイルを確認する(test.txtが追加されたことを確認)
ls -l
実行すると、以下のようにtest.txtを追加することができました。

これにて、ファイルアップロードの完了です。
参考までに、以下のコマンドでファイルを削除することができます。
#ファイルをサイト側のディレクトリから削除する
rm [削除したいファイル]
さいごに
クライアントソフトを入れない方法については、コマンドでの操作になりますが、慣れてしまえばこちらのほうが簡単に操作できるようになります。
是非一度試してみてください。
また、再度になりますが、上記アップロードの作業が終わったら、Xserverの設定で許可していた「FTPのIP制限」や、「SSHの設定」をもとに戻しておくことを忘れないようにしてください。