Help us understand the problem. What is going on with this article?

git公開鍵の追加方法

More than 1 year has passed since last update.

問題の経緯

  • 環境:Windows7,8,10 64bit
  • git push origin masterしたときに"permission denied"エラーが出たときのトラブルシューティングメモ
  • 今までgitはGit for Windowsから落として、付属してきたmingw32ターミナル上からコマンドぺちぺち打ち込んでた。
  • 最近ターミナルエミュレータcmder導入した。
    • fullバージョン落としたらgit付属してきた。
    • cmder上でmsysとかmingw開いてgitしたかった。 cmder上でmingw開いてgit add .git commit -m"なんちゃらかんちゃら"まではコマンド通るのにgit push origin masterすると
Permission denied (publickey).
fatal: Could not read from remote repository.

Image.png


解決法

公開鍵作る

git for windowsのときは勝手にやってくれたのかな?公開鍵作った覚えない

コマンドプロンプト上でgit-bash立ち上げる

git-bashを開く(C:\Users{USERNAME}\AppData\Local\GitHubみたいな感じの、gitの入っているところに環境変数のパスが通っているならコマンドラインにgit-bashと打ち込んでgit shellが開く)

$ git-bash

別にgit-bashでなくてもよいんではないか疑惑。
bashなら何でもいいんじゃない?

ssh-keygen走らせる

$ cd ~/.ssh   #"~"はホームディレクトリの意味。
$ ssh-keygen -t rsa -C "mymailaddress@gmail.com"

ホームディレクトリはLinuxユーザーなら常識。
windowsユーザーなら、ホームディレクトリとして環境変数にHOMEの名前で 追加しておくとよい。

Win+pause > 詳細設定 > 環境変数 で環境変数の設定に行ける。
例)HOME C:\Users<YourName>\Documents
僕はDropbox内にホームディレクトリ作ってます。
homedir.png


ホームディレクトリにssh-keygenがない?

Cmderのgit-for-windowsを使い始めて分かったけど、ssh-keygen.exe

<Cmderインストールディレクトリ>Cmder\vendor\git-for-windows\usr\bin\ssh-keygen.exe

にあるようだ


さて、ssh-keygen走らせるとこんなん表示される。

Generating public/private rsa key pair.
Enter file in which to save the key (/e/Users/U1and0/Dropbox/Program/.ssh/id_rsa):

書いてあるように

public/private rsa key pairgenerate`された

ようだ。うーむよくわからん。
さらに続いて

Enter file in which to save the key (/e/Users/U1and0/Dropbox/Program/.ssh/id_rsa):

とある。さっき指定したHOMEディレクトリにrsa作るつもりらしい。
言われたからENTER押す。
するとこう言ってくる。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

ということでパスワードを設定(確認含めて2回打つ。)

追記
パスワードはなくても動く!(←よく理解していない人のコメント)
pushするたびにパスワード聞かれなくて楽だ
↑empty for no passphraseとあるからなくてもおかしくない?

ということでパスワード打たずにEnter二回押す。

Your identification has been saved in /e/Users/U1and0/Dropbox/Program/.ssh/id_rsa.
Your public key has been saved in /e/Users/U1and0/Dropbox/Program/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:**********************************
The key's randomart image is:
+---[RSA 2048]----+
|          ..oo.  |
|     . . . ** ** |
|    . + =**     .|
|     + + @ ** .  |
|    .   *****  . |
|         + o =.oo|
|        . . o***o|
|              **+|
|             .=X@|
+----[SHA256]-----+

identificationとpublic keyが%HOME%/.sshディレクトリ下のid_rsaid_rsa.pubというファイルに作られたようだ。

ssh-keygenからここまでの流れ↓

sshkeygen.PNG

sshエージェント走らせる

Generating an SSH keyによると
eval $(ssh-agent -s)と打ってバックグラウンドにsshエージェントとやらを走らせる
そうするとなんか数字が返ってくる

$ eval $(ssh-agent -s)
Agent pid {数字が5桁くらい}

sshエージェントに公開鍵を追加する

$ ssh-add <HOMEディレクトリ>/.ssh/id_rsa (+パスワード?)    #←打ち込む。パスワードなければそのままエンター
Enter passphrase for **************/.ssh/id_rsa:   ←こんなの返ってくる
Identity added: *******************************_rsa (**********)

idコピーする

clip < ~/.ssh/id_rsa.pub

と打ち込む。
するとクリップボードに長々とidがコピーされるので、Adding a new SSH key to your GitHub accountに従いgithubのSetting>SSH keys>Keyの欄に"ssh-rsa"の文字を取り除いて貼り付ける。"ssh-rsa"取り除くと怒られる。Titleはテキトーに。

GitHubに公開鍵を追加

ブラウザ開いてGitHubの設定のページへ。
githubのSetting>SSH keys>Keyの欄に貼り付ける。Titleはテキトーに。

スクリーンショット 2016-02-20 19.05.05.png

Bitbucketに公開鍵を追加

同様にBitbucketのssh設定ページへ飛び(アカウント→設定→SSH鍵→鍵を追加)、クリップボードにコピーしたid_rsa.pubの中身を貼り付ける。

bitbucket_sshkey.PNG


参考

githubへpushできないときの対処(permission denied)
Generating an SSH key

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away