目指すゴール
- ローカルで開発
- GitHubにpush
- リモート(ヘテムル)でpull
私の環境
環境 | |
---|---|
ローカルPC | MacBookAir OSX |
レンタルサーバー | ヘテムル |
Git管理ツール | SourceTree |
言語 | PHP |
おおまかな流れ
-
事前準備
- 【ヘテムル】SSHログイン
-
SSHキーの設定
- 【ローカル】SSHキーを生成
- 【ヘテムル】公開鍵を登録する
- 【GitHub】公開鍵を登録する
-
手動でプル
- 【GitHub】リポジトリ作成
- 【ヘテムル】手動でリポジトリをプル
事前準備
【ヘテムル】SSHログイン
ヘテムルは最初からGitを使える状態にしてくれているみたいです。
▼ ヘテムル公式で設定方法をまとめてくれています。
ヘテムル > マニュアル > Git利用法
でも初心者なわたくしは、一行目の
お好みのSSHソフトでご自身のサーバーにSSH接続します。
からひっかかりました\(^o^)/ナンダソレ
▼ リンク先のマニュアルを見ると、ターミナルとかの黒い画面を「SSHソフト」って言うみたいです。
ヘテムル > マニュアル > SSHソフトの設定とコマンド
そうだったのか。。。
▼ リンク先のこちらを参考に、SSHの設定をしました。
ヘテムル > マニュアル > SSHのご利用方法
▼ 引き続きこちらを参考に、SHH接続をしました。
マニュアル > SSH ソフトの設定とコマンド > ターミナルの設定方法
$ ssh -p 2222 【SSHアカウント名】@【ホスト名】 //【FTPアカウントのユーザー名】@【SSHアカウントのサーバー】ってことね!
# なんかyes/no聞かれたら'yes'とEnter
▼ SSHパスワードを聞かれるので、下記ページで確認して貼り付けます。
トップページ > SSH アカウント
※何回か使うことになるので、一時的にどこかに貼り付けておくといいかも。
SSHキーの設定
▼ 公開鍵とは
公開鍵?秘密鍵?SSHキー?SSHアカウントのサーバーとかパスワードとは違うの???
慣れない言葉が飛び交っていまいち分かりにくかったのですが、さくらさんの説明が分かりやすかったです!以下抜粋。
公開鍵認証方式でログインするには鍵が2つ必要です。
パソコン側に置く秘密鍵ファイルと、サーバー側に置く公開鍵ファイルです。秘密鍵ファイルは人に知られてはいけません。
公開鍵ファイルは、人に知られても良い(公開できる)ファイルです。
この2つのファイルが揃って初めて公開鍵認証によるログインが可能になります。公開鍵認証では、sshのログイン時に使ったパスワードの代わりに「パスフレーズ」を使用します。
サーバーへログインするパスワードと似たようなもので、自分が決めた文字列を設定できますが、これはサーバーへログインするためのものではなく、秘密鍵にアクセスするための秘密の文字列です。
【ローカル】SSHキーを生成
▼ すでにSSHキーが設定されていないか、念のため確認する。
GitHub Help > 既存のSSH鍵の確認
$ ls -al ~/.ssh
下記のいずれかが存在しなければ、新しいSSH鍵を生成します。
・ id_dsa.pub
・ id_ecdsa.pub
・ id_ed25519.pub
・ id_rsa.pub
▼ 新しいSSH鍵を生成する。
GitHub Help > 新しいSSH鍵を生成してssh-agentに追加する
$ ssh-keygen -t rsa //オプションつけてる記事もあるけど、なくていいらしい
# 鍵の保存先を聞かれるので、デフォルトのままEnterする
# パスフレーズを聞かれるので、空のまま2回Enterする
▼ SSH鍵をssh-agentに追加する
$ ssh-add -K ~/.ssh/id_rsa //Mac限定のコマンドらしい
【ヘテムル】公開鍵を登録する
▼ サーバーへの公開鍵登録方法
Qiita > ssh公開鍵認証設定まとめ
参考記事によると、登録方法は2種類あるらしい。
・ ssh-copy-id を使用して登録
・ 手動で登録
前者の方法でやってみようと思ったけど、Homebrewのコマンド使えなかった(ノД`)シクシク
手動で登録してみます。
▼ ヘテムルに必要なフォルダとファイルを設置
# ヘテムルにSSHログイン
$ ssh -p 2222 【SSHアカウント名】@【ホスト名】 //パスワード聞かれたら入力
# フォルダとファイルを作成
$ mkdir .ssh
$ touch .ssh/authorized_keys
# 権限の設定。個々を間違えると、公開鍵認証でログイン出来ないので注意
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
# いったんログアウト
$ logout
▼ ローカルの公開鍵をヘテムルのauthorized_keysへ追記
# ローカルの公開鍵をヘテムルのauthorized_keysへ追記
$ cat ~/.ssh/id_rsa.pub | ssh -p 2222 【SSHアカウント名】@【ホスト名】 'cat >> .ssh/authorized_keys'
# パスワード聞かれたら入力
▼ 公開鍵認証で接続できるか確認
# ヘテムルにSSHログイン
$ ssh -p 2222 【SSHアカウント名】@【ホスト名】
いつもみたいにパスワードを聞かれずすんなりログインできたら、成功です!やったね☆
参考記事だとつづけて「パスワード認証を禁止する」のだけど、
鍵登録が正常にできていなかった場合、サーバーへVNCできるか物理アクセスできないと 詰みます
ってのがなんか怖いし、禁止しなくても問題ないのでスルーします(ビビリ)
▼ ssh configの設定(飛ばしてもOK)
SSHログインのたびにパスワードを入力する面倒臭さからは開放されました。
でも毎回 $ ssh -p 2222 【SSHアカウント名】@【ホスト名】
って打つのも面倒ですよね。
$ ssh heteml
みたいに、自分で設定したキーワードで簡単にログインできるようになるらしいです!
SSHログアウト後、ローカルで実施。
$ vi ~/.ssh/config # viが立ち上がる
i # INSERTモードに変更
Host heteml
HostName 【ホスト名】
User 【SSHアカウント名】
Port 2222
ESC # コマンドモードに戻る
ZZ # 上書き保存し、viを終了
無事、$ ssh heteml
でログインできるようになりました☆
ちなみにviコマンドはこちらの参考ページにお世話になってます。
Qiita > よく使うVimのコマンドまとめ
※viで編集するのが嫌だったら、普通にエディターで編集してもOKですよ!
【GitHub】公開鍵を登録する
Qiita > gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
▼ 鍵の中身をクリップボードにコピー。
ローカルで実施。
$ pbcopy < ~/.ssh/id_rsa.pub
Titleは分かりやすければ何でもいいらしい。
Keyは先ほどクリップボードにコピーしたものを貼り付けるだけ!
▼ 接続を確認する。
$ ssh -T git@github.com
# なんかyes/no聞かれたら'yes'とEnter
↓こんなふうに返ってきたら成功です☆
Hi 【ユーザー名】! You've successfully authenticated, but GitHub does not provide shell access.
手動でプル
まずはプルしてくるためにリポジトリを用意します。
【GitHub】リポジトリ作成
▼ GitHubにログインして、右上の「+」から「New repository」を選択。
▼ リポジトリ名入力/README作成/.gitignore追加にチェックを入れて、リポジトリ作成。
今回は制作予定サイトのドメインと同じリポジトリ名で作成しました。
READMEはなくてもいいんだけど、とりあえずのファイルを作るのが面倒なので生成してもらいました。
.gitignoreはとりあえずCodeIgnitorを選択したけど、使う言語・フレームワークに合わせてください。
【ヘテムル】手動でリポジトリをプル
会社で自動デプロイを利用していますが、時々トラブルや緊急対応で手動プルしてる時があります。
自動デプロイの設定をする前に、まず手動でGitHubから手動プルできるかやってみます。
▼ やっとGit利用法のマニュアルに戻ってこれました。
ヘテムル > マニュアル > Git利用法
▼ ユーザーの初期設定をする。
$ git config --global user.email "【GitHubのメールアドレス】"
$ git config --global user.name "【GitHubのユーザー名】"
$ git config --global color.ui auto
$ git config --global --list # ユーザーの初期設定が ~/.gitconfig に保存されるので、設定を確認
▼ ディレクトリ移動。
GitHubで管理したいディレクトリに合わせてください。
$ cd ~/web/xxxxx
▼ リポジトリを作成する。
$ git init # リポジトリを作成
$ git remote add origin git@github.com:【ユーザー名】/【リポジトリ名】.git # GitHubのリポジトリと紐付け
このあと
$ git clone git@github.com:【ユーザー名】/【リポジトリ名】.git
か、
$ git pull origin master
でGitHubからリポジトリを引っ張ってこれると思ったのですが、なかなかうまく行かない。。。
どうやら秘密鍵もリモートに置いておく必要があるみたいです。
「えっ!?秘密なのにリモートに置いていいの?」ってハラハラする初心者な私。
あ、やっぱりリモートに秘密鍵置いちゃダメですよね!(ほっ)
※ と思ったけど、後でやっぱりリモートに秘密鍵を置くことになりました。。。記事の最後参照。
▼ .ssh/configに設定を追加する。
Qiita > ssh-agentを利用して、安全にSSH認証を行う
$ vi ~/.ssh/config # viが立ち上がる
i # INSERTモードに変更
Host heteml
HostName 【ホスト名】
User 【SSHアカウント名】
Port 2222
ForwardAgent yes # この一行を追加
IdentityFile ~/.ssh/id_rsa # ついでにこれと
IdentitiesOnly yes # これも追加
ESC # コマンドモードに戻る
ZZ # 上書き保存し、viを終了
ForwardAgent yes
とすることで、秘密鍵をローカルに置いたままリモートでも使い回しできるらしいです。
SSHログインする時に使った秘密鍵を、ログイン中GitHub用にも使わせてねって感じかな。
IdentityFile ~/.ssh/id_rsa
とIdentitiesOnly yes
は、SSHログインしようとすると
Too many authentication failures for ユーザー名
というエラーが出てくるようになってしまって、
こちらの記事をマネして追加しました。
AWSにSSHログインでToo many authentication failuresエラー
▼ リポジトリをプルする。
再度 $ ssh heteml
でログインし直してください。
$ cd ~/web/xxxxx
$ git pull origin master
# なんかyes/no聞かれたら'yes'とEnter
無事にできました☆
自動デプロイ環境づくり
この記事を書き始めた当初の目的は自動デプロイ環境作りだったのですが、どうしてもうまくいかなくて。
リモートに秘密鍵を置くようにしたらうまくいきました!(それでいいのかは分かりませんが…)
別々の方法が1つの記事になっていると分かりにくかったので、2本に分けました。
もしよければ自動デプロイ環境づくり版の記事も、ご覧ください。
Qiita > 初心者がGitHubからヘテムルに手動pullするまでのお話 ←今ココ
Qiita > 初心者がGitHubからヘテムルに自動デプロイする環境を構築するまでのお話