毎日Learning

学んだことを共有します

GitHubにSSHでgit pushする方法

GitHubの自分のリポジトリにpushするときに、SSHキーを使ってできるのだが、ちょっとハマったので、備忘録しておく。

ハマったポイントは、

1. ~/.ssh/id_rsa は、他の環境に使ってる
2. 先にGitHubリポジトリ作ってそれをcloneした状態だった

って感じかなー。

1は、id_rsaGitHub用に使える場合、とくに問題にならないけど、私の場合は、色んなSSH環境に接続する手前、id_rsa_xxxみたいにファイル名で環境を管理してる。
ので、ハマった。

2は、GitHubからcloneしてくるときに、

f:id:yoshiyoshifujii:20140812224053p:plain

ここからURLをclipして

$ git clone https://github.com/...

ってやってしまったもんですから、SSH接続にならないので、1をクリアしても結局、pushできないみたいなハマり方をした。

で、きちんと、整理して、以下の手順を実施すれば、いけると思う。

1. SSHキーを作成
2. GitHubSSHキーを登録
3. ~/.ssh/configに追加
4. git remote originの設定変更
5. git push

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)


1. SSHキーを作成

以下のコマンドを実行して作成する。

$ cd ~/.ssh
$ ssh-keygen
  Generating public/private rsa key pair.
  Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): id_rsa_github
  Enter passphrase (empty for no passphrase):
  Enter same passphrase again:
  Your identification has been saved in id_rsa_github.
  Your public key has been saved in id_rsa_github.pub.
  ...

冒頭に述べたとおり、 ~/.ssh/id_rsaに出力したくないので、~/.sshディレクトリに移動してから、id_rsa_githubって名前を指定してる。

これで~/.sshディレクトリ直下に、

のファイルができているはず。

2. GitHubSSHキーを登録

次に、id_rsa_github.pubの中身をGitHubに登録するのだが、、、

このあたりは、GitHubなり、他サイトなりを参照いただきたく、省略させていただきます。

※一応、公式のリンクを貼っときます
Generating SSH Keys · GitHub Help

3. ~/.ssh/configに追加

Vimなりで、以下のファイルを開いて追記する。

$ vim ~/.ssh/config
Host github.com
  HostName github.com
  User git
  IdentityFile "/Users/xxx/.ssh/id_rsa_github"

ここでハマりポイント1の登場。

Host github.com

のところは、4の手順で実施する、 git://github.com/... のgithub.comとそろえないと認識されないから注意。

つまり、

Host github.com.hogehoge

とかして、 git://github.com.hogehoge/... ってしても良い。

hogehogeのところを目的に応じて変更するとかで、管理できたりするだろう。

4. git remote originの設定変更

ハマりポイント2の登場。

HTTPSでcloneしてるので、以下のコマンドを実行して、SSHでremote接続するように変更する。

$ git remote -v
  origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
  origin  https://github.com/USERNAME/REPOSITORY.git (push)

で、remoteがHTTPSになってることを確認して、

$ git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

って実行してやると、OK。

5. git push

git push origin master

って実行するとうまいこといけるはず!!

以上。