こちらの記事は、「GitHubでLaravelをXserver へデプロイする方法」のSSH接続に関する解説です。
【簡単】GitHubでLaravelをXserverへデプロイする方法 その2-クローン編-なぜXserver なのか。それは私がXserver 大好きだから!!!
SSHとFTP?本番環境へファイルをアップロードする2種類の方法!
まず、Xserver にファイルをアップロードするに当たって、どのような通信方法があるのかご紹介します。
FTP(ファイル・トランスファー・プロトコル)
FTPは、名前の通りファイルを転送する通信技術です。Xserver が用意したFTPサーバーを通して、Webページのデータを書き換えることができます。
しかし、そのためにはクライアント側専用のソフトが必要です。ファイルのアップロードを行うためには、まずこの専用ソフトを手元のPCに用意しなければなりません。ソフトにはFFFTPやFileZillaというものがあります。
SSH(セキュア・シェル)
SSHも同じく通信技術で、外部のコンピューターにリモートで接続することができます。sshという暗号化されたルールを使うため、より安全な通信が行えるとのことです。
今回はこちらを使用します。まずは Xserver の設定から始めましょう。
SSH接続のためのXserver各種設定
Xserverのサーバーパネルにログインし、アカウント > SSH設定へ進みます。まずは、XserverのSSH接続をONに。
次に、公開鍵認証用鍵ペアの生成するため、半角英数字6~32字でパスフレーズを登録します。SSH接続のときに必要なので覚えておきましょう。忘れても再設定できますが、このあとの設定をし直す必要があります。
「確認画面へ進む」をクリック。
そして「生成する」をクリックすると、秘密鍵が自動的にダウンロードされます。秘密鍵の名前は、「XserverのユーザーID.key」になっています。(ここではuser.keyにしておきます)
【SSH接続】秘密鍵の設定3ステップ -ターミナル操作-
ここからターミナルをさわっていきます。
【SSH接続】秘密鍵の移動と名前変更
Last login: Tue Dec 17 09:08:36 on ttys000
You have new mail.
Me-no-MBP:~ Me$
ターミナルを開くと、はじめにこんなのが出てきますね。1行目は、前回ターミナルを開いた日時です。ttys000は、ターミナルを操作するときに割り当てられるIDのようなものらしいです。ターミナルをいくつも開けていると、ttys001、ttys002と増えていきます。
ではまず、.sshディレクトリを作成し、秘密鍵をそこへ移動します。
Me-no-MBP: ~ Me$ mkdir ~/.ssh
Me-no-MBP: ~ Me$ mv ~/Downloads/user.key ~/.ssh
mkdirは make directory の略で、ディレクトリを作成するコマンドです。
mvコマンドには2種類の意味があります。1つはファイル名/ディレクトリ名の変更、もう1つはファイル/ディレクトリの移動です。
例えば次のコマンドであれば、1つ目が名前の変更で、2つ目が移動です。
mv a.html b.html (a.htmlファイルをb.htmlに変更)
mv a.html b (a.htmlをbディレクトリに移動)
今回は.sshディレクトリを作成し、Downloadsに入っていたuser.keyを.sshディレクトリに移動しました。
次にuser.keyの名前を変更します。まずは.sshディレクトリに(自分が)移動します。自分が移動するには、cdコマンドを使います。
Me-no-MBP: ~ Me$ cd ~/.ssh
Me-no-MBP: .ssh Me$
さっきまで「~(チルダ)」ホームディレクトリにいましたが、今は.sshディレクトリにいます。では、mvコマンドで秘密鍵の名前を変更しましょう。
Me-no-MBP: .ssh Me$ mv user.key id_rsa
id_rsaというのは秘密鍵として使われる通称です。RSA暗号という仕組みを利用しています。サーバーをいくつも管理していて、秘密鍵も複数ある場合は別の名前でも問題ありません。
【SSH接続】秘密鍵の権限を変更する
権限を変更する際に使用するのがchmod(change mode)コマンドです。対象のディレクトリ・ファイルに対して、実行、編集、あるいは読み取りだけといった権限の範囲を変更できます。
- 読み取り 4
- 編集 2
- 実行 1
のように、それぞれの権限に数字が割り当てられています。これらを、権限の範囲ごとに加算します。例えば、すべての権限を与えるなら7、実行と読み取りなら5、という具合です。
そして、所有者・グループ・その他のユーザーの順番に権限の数字を指定します。
今回は、次のように設定します。
Me-no-MBP: .ssh Me$ chmod 700 ~/.ssh
Me-no-MBP: .ssh Me$ chmod 600 ~/.ssh/id_rsa
0は権限なし、つまり所有者以外のユーザーには何も権限がないということです。
【SSH接続】簡単接続設定【最後にひと手間】
SSH接続は、ターミナルでsshコマンドを打って接続します。しかし、これが長い!!
ssh -i id_rsa xserver.xsrv.jp -p 10022
めんどくさい。そして、何も設定しないとすぐに接続が切れます。その度にまたこの長いコマンドを打たなくてはなりません。
そこで、簡単に自動切断なしの接続ができるように、「configファイルに設定を書き込む」という作業を行います。
まず、touchコマンドで.sshディレクトリの中にconfigという名前の新規ファイルを作成します。
Me-no-MBP: .ssh Me$ touch ~/.ssh/config
このままvimモードにして編集することもできますが、今回はファイルを直接操作します。.sshディレクトリを開きます。
Me-no-MBP: .ssh Me$ open .
macのFinderがひらいて、configファイルにアクセスして、テキストエディットなどで下記を追記します。
Host xserver
HostName サーバーID.xsrv.jp
Port 10022
User サーバーID
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
一行目Hostのとなりにある「xserver」は、SSH接続するときのコマンドです。
ssh xserver
と打つとエックスサーバーのサーバーに接続できます。自分でわかりやすい名前をつけておきましょう。
ServerAliveIntervalはサーバーの自動切断を防ぎます。60秒ごとにサーバーにメッセージを送って接続を確認し、3回応答がなければ切断されるようです。
これで準備完了です。
Me-no-MBP: ~ Me$ ssh xserver
と打つと、1回目はThe authenticity of host ‘サーバーID’ can’t be established.と出ます。このサーバー信頼できるかわかりませんけど?ほんまに繋ぎます??いうことですね。yesを入力して繋げると、秘密鍵のパスフレーズを聞かれるので答えます。パスフレーズが合っていれば無事繋がります♪
お疲れ様でした。
次はクローン編だよん
【簡単】GitHubでLaravelをXserverへデプロイする方法 その2-クローン編-