みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Windowsマシンに本番環境と超簡単に同期できるWordPressのオススメローカル環境を作っています。
前回はこちらの記事で、Cygwinという開発ツール群をインストールしました。
今回はそのCygwinを使って、WindowsマシンでのエックスサーバーとのSSH接続を試していきたいと思います。
目指すWindows向けWordPressローカル環境についておさらい
これまでのシリーズで
- ViutualBoxとVagrantでローカルPC内の仮想開発環境を構築した
- VCCWを使ってWordPress用ローカル環境を構築した
とここまで進めています。
なんだ、もうWordPressローカル環境はできてるじゃん、と思われるかもしれませんが、そうじゃないんです。
VCCWによってインストールしたツール群にWordMoveという超簡単に本番環境との同期をするツールがあるのですが、WordMoveではローカルと本番の接続にFTPという方法か、SSHという方法かどちらかを使います。
しかしFTPだと
FTPやTelnetだと通信内容は暗号化されず,そのまま(平文)で送られるため,通信経路を盗聴されるとアカウントやパスワードが簡単に盗まれてしまう
引用:Webデザイナーなら知っておくべき サーバ知識相談室
というデメリットもあるため、SSHを使うほうが好ましいわけです。
ということで、今回は一つの例として本番として利用しているエックスサーバーと、ローカルPCとのSSH接続を試していこうというわけです。
SSH接続のための公開鍵と秘密鍵を用意する
先ほどFTPではデータが平文で送られてしまうというお話をしましたが、ということはSSHでは平文ではなくて暗号化されて送られるというわけですよね。
SSHでファイル転送をする際には送る側では暗号化をして、受け取る側では復号化をするわけです。
その暗号化・復号化をするために、今回の場合はローカルPC側に秘密鍵、本番サーバー側に公開鍵という一対の鍵を用意しておく必要があります。
ssh-keygenコマンドで鍵を生成する
その鍵を作るコマンドがssh-keygenコマンドです。Cygwinのインストールの際に、opensshというパッケージを入れていれば使えます。
ssh-keygen
これで実行です。
まず「Enter file in which to save the key」と聞かれますが、これはデフォルトのままでOKですのでそのままEnterします。
今回のデフォルトは「/home/Noriaki/.ssh/id_rsa」だそうです。
次に「Enter passphrase」つまり「パスワードを入れなさい」と指示されます。2回尋ねられるので、同じパスワードを都度入力して下さい。
すると、デフォルトフォルダつまり「C:cygwin64/home/Noriaki/.ssh」フォルダ内に、id_rsaとid_rsa.pubというファイルが出来上がっています。
秘密鍵のパーミッションを変更する
これがコマンドプロンプトを捨ててCygwinを使わなければいけない理由だったのですが、秘密鍵であるid_rsaのパーミッションを変更しなければなりません。
何もせずにSSH接続をしようとすると
Permissions 0660 for ‘id_rsa’ are too open.
というエラーが発生します。
パーミッションというのはそのファイルのアクセス権のことを言うのですが、その設定を変えないとSSH接続ができないということです。
しかしながら、コマンドプロンプトにはそもそもこのパーミッションを変更するコマンドが実装されていないので、UNIXコマンドを実行できるCygwinを導入したというわけです。
(ここも超ハマったポイントでした…)
Cygwinであればサクっと
chgrp -R Users ~/.ssh
chmod 700 .ssh
chmod 600 .ssh/id_rsa
これでSSH接続ができるパーミッションの設定になります。
id_rsaのほうが秘密鍵ですので、これでローカル側の秘密鍵の準備は完了ということになります。
エックスサーバーに公開鍵を登録する
では公開鍵を本番サーバーであるエックスサーバーに登録していきます。
エックスサーバーはSSH接続のための公開鍵を登録する画面を用意してくれていまして、新設ですね。
サーバーパネル内のSSH設定を選択します。
SSH設定で「ONにする」をクリックして状態をONにします。
次に「公開鍵登録・設定」タブの公開鍵欄に先ほど作成したid_rsa.pubの内容を貼り付けして、「公開鍵を登録する」を押下します。
id_rsa.pubはテキストエディタで開いて内容をコピーしましょう。
これでエックスサーバーへの公開鍵登録は完了です。
SSH接続を実行
これでSSH接続をする準備は整いました。
接続をするコマンドは
ssh ユーザー名@ホスト名 -p 接続ポート
で行けます。エックスサーバーの場合は
- ホスト名:サーバーID.xsrv.jp
- ユーザー名:サーバーID
- 接続ポート:10022
ですから
ssh XXXX@XXXX .xsrv.jp -p 10022
とすればOKです。
これで無事にエックスサーバーとのSSH接続が完了しました。
まとめ
これにてエックスサーバーとローカルPCとのSSH接続ができるようになりました!
さくっと書いてますが、ハマりにハマって大変だったんですよ…Windowsの場合はコマンドプロンプトを使わないようにどうぞお気を付け下さい。
次回はいよいよWordMoveでの同期を試していきたいと思います。
どうぞお楽しみに!