2010年12月17日金曜日

githubへの初回pushでsshエラー

gitをテスト環境に入れてからgithubにpushしようとしたら、少しつまずいたのでメモ。
githubの始め方はこちらのブログで分かりやすく説明されているので割愛します。
gitのインストールとgithubリポジトリ(project_hoge)の作成は事前に完了しておいて下さい。

  • githubへのssh接続に使う秘密鍵と公開鍵のペアを作成
  • ※名前は自分で指定してますが、それがすべての始まり
    ※公開鍵はgithubに追加してくださいね
    1. $ ssh-keygen -t rsa -C "github-hoge"  
    2. Generating public/private rsa key pair.  
    3. Enter file in which to save the key (/home/hoge/.ssh/id_rsa): /home/hoge/.ssh/hoge_rsa  
    4. Enter passphrase (empty for no passphrase):パスフレーズ  
    5. Enter same passphrase again:パスフレーズ  
    6. Your identification has been saved in /home/hoge/.ssh/hoge_rsa.  
    7. Your public key has been saved in /home/hoge/.ssh/hoge_rsa.pub.  
    8. The key fingerprint is:  
  • gitの初期設定を行います
    1. $ git config --global user.name "hoge"  
    2. $ git config --global user.email "hoge@example.com"  
    3. $ git config --global color.ui auto  
  • git設定の確認
    1. $ cat -n .gitconfig  
    2.      1     [user]  
    3.      2          name = hoge  
    4.      3          email = hoge@example.com  
    5.      4     [color]  
    6.      5          ui = auto  
  • リポジトリの初期化、基本設定確認
    1. $ mkdir project_hoge  
    2. $ cd project_hoge/  
    3. $ git init  
    4. Initialized empty Git repository in /home/hoge/project_hoge/.git/  
    5. $ git var GIT_COMMITTER_IDENT  
    6. hoge <hoge@example.com> 1292429310 +0900  
    7. $ git var GIT_AUTHOR_IDENT  
    8. hoge <hoge@example.com> 1292429366 +0900  
    9. </hoge@example.com></hoge@example.com>  
  • README作成、最初のコミット
    1. $ touch README  
    2. $ git add README  
    3. $ git commit -m 'first commit'  
    4. [master (root-commit) 92e6b51] first commit  
    5.  1 files changed, 256 insertions(+), 0 deletions(-)  
    6.  create mode 100644 README  
  • githubをリモートリポジトリに追加
    1. $ git remote add origin git@github.com:hoge/project_hoge.git  
  • pushしようとするとエラーが発生!
    1. $ git push origin master  
    2. Permission denied (publickey).  
    3. fatal: The remote end hung up unexpectedly  
    SSHの鍵をデフォルトの名前にしなかった事があやしいです。
    ここらへん見るとそれらしき事が書いてます。
  • .ssh/configで使用する鍵を指定します
    1. $ vi /home/hoge/.ssh/config  
    2.       1 Host                 github.com  
    3.       2 User                 git  
    4.       3 Port                 22  
    5.       4 Hostname             github.com  
    6.       5 IdentityFile         ~/.ssh/hoge_rsa  
    7.       6 TCPKeepAlive         yes  
    8.       7 IdentitiesOnly       yes  
    9.   
    10. $ chmod 600 .ssh/config   
  • 再トライをすると無事に接続が出来ます
    1. $ git push origin master  
    2. Enter passphrase for key '/home/hoge/.ssh/hoge_rsa':  
    3. Counting objects: 3, done.  
    4. Compressing objects: 100% (2/2), done.  
    5. Writing objects: 100% (3/3), 4.57 KiB, done.  
    6. Total 3 (delta 0), reused 0 (delta 0)  
    7. To git@github.com:hoge/project_hoge.git  
    8.  * [new branch]      master -> master  


以上、メモでしたー。
今日はクラウド勉強会に参加していましたが、とても勉強になりました。
おそらく年内は最後かもですが、勉強会はとても刺激になるので来年も積極的に参加したいですね。