【Railsチュートリアル第一章】BitbucketでPermission denied (publickey)と言われたときの対処法
はじめに
※この記事は現在Railsチュートリアルに取り組んでいる方向けの記事です。
先日、生徒さんから
「RailsチュートリアルのBitbucketの設定でつまづいてしまいました。。。」
と質問されました。
無事に解決できたのですが、せっかくなのでその解決方法をまとめようと思い、記事にすることにしました。
生徒さんからいただいた質問の内容
======
【ご質問】
@ウェブ系ウシジマくん
RailsチュートリアルのBitbucketの設定でつまづいてしまいましたので、アドバイスを頂戴したく。
◯つまづいた箇所
Bitbucketへのリポジトリ追加とプッシュができない
◯エラーログ
ec2-user:~/environment (master) $ cd hello_app
ec2-user:~/environment/hello_app (master) $ git remote add origin [email protected]:ec2-user/hello_app.git
fatal: remote origin already exists.
ec2-user:~/environment/hello_app (master) $ git remote rm origin
ec2-user:~/environment/hello_app (master) $ git remote add origin [email protected]:ec2-user/hello_app.git
ec2-user:~/environment/hello_app (master) $ git push -u origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
◯試したこと
・一旦rmで消去して、もう一度同じ手順でプッシュしてみる
・ユーザー名が違うかと思い、確認したが合っている
・ git push -u origin --all
とコマンド入力してみる
◯参考にしたURL
http://pyoonn.hatenablog.com/entry/2014/10/29/191744
https://qiita.com/katsukii/items/c3df0653ac07d41fe03f
以上です。よろしくお願いいたします
=======
なにかわからないことがあったときに、このような形で質問されると、答える側も回答しやすいですね。
闇雲に、
「なんかエラーがでました。。」
と言われても、原因を究明するのに時間がかかってしまいますし。
まずは現在がリモートリポジトリにどんなURLが登録されているかを確認
Permission denied (publickey).
となる場合、大抵はSSH接続が正しくできていないことが多いですね。
とりあえずは、一旦以下のコマンドを入力して、まずは、現在のリモートリポジトリの状況を確認してましょう。
$ git remote -v
すると、以下のような表示がされると思います。
$ git remote -v
origin [email protected]:ec2-user/hello_app.git (fetch)
origin [email protected]:ec2-user/hello_app.git (push)
ここからわかることは、とりあえずリモートリポジトリにはちゃんとURLが登録されていて、存在しているということです。
エラーの原因は公開鍵と秘密鍵に不整合が起きているため
SSH接続は鍵という概念があって、公開鍵である id_rsa.pub
を登録すると、pushする際に自分だけローカルに持っている秘密鍵と照合し、それぞれのユーザーを認識するような仕組みをとっています。
今回生徒さんからご質問いただいたエラーは、その公開用の鍵と秘密鍵の整合性があっていないのが原因ですね。
sshディレクトリ配下のファイルを確認してみる
エラーの原因がわかったところで、解消に向けてコマンドを叩いていきましょう。
まずはターミナルで次のコマンドを実行します。
$ ls ~/.ssh
実行結果を確認してみてください。もし、表示が
authorized_keys known_hosts
とだけになっていたら、あなたはまだ公開鍵と秘密鍵を作成していないことになります。
ということで、次のコマンドを使って、それぞれの鍵を作成しましょう。
$ ssh-keygen -t rsa -C "[email protected]"
すると、いろいろと聞かれるので、必要事項を入力します。
ec2-user:~/environment $ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): hoge
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in hoge.
Your public key has been saved in hoge.pub.
The key fingerprint is:
SHA256:/Wm/wQl1So7ugK1dPmbLwg3Bjg+hbr/knnhW+2Q6f3E [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| . o .|
| ..o = o |
| .S+..o o |
| . oo+o +..E|
| . o=o+O +o |
| o+o+*@=... |
| ..=B.oBB+o. |
+----[SHA256]-----+
項目 | 意味 |
---|---|
Enter file in which to save the key | 公開鍵のファイル名を入力。そのままEnterを押すと、id_rsa という名前になる。(すでにあった場合は、上書きしていいかと聞かれる) |
Enter passphrase (empty for no passphrase) | 秘密鍵用のパスワード。そのままEnterを押すと、パスワードなしになる。 |
Enter same passphrase again | 確認用なので秘密鍵用のパスワードを再入力 |
無事に作成できたら、下記のコマンドを実行しましょう。
$ cat ~/.ssh/id_rsa.pub
すると、次のような暗号化された文字列が返ってきます。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGIpyz/3d8VYW8lKsx46wQ4VmnnT318h867KemwKnfBknfRi9Xq9nFLexoLNJTdgFNlzUkls90UshG6C2QOZpEVgBCpeE9xhde3hnahFPoR8RltwrsyzX8CHrItK2ZmUOsrQjC/Sy4ZTEUZeLDK472FeuBElJ3ukPOG1hDeVaDS3bYJyKy1T+MSOX7tXfwcyQNDHzko+5luJWEVkciV1aoJ3vflAm3XKdrZ1q/eY+7wf8yThD6a1jWtqsPfP/2WZ3fbmBW7CX8XVzSDbO3DFmorZuwpXFGXOqd8nGFtZnbL3jOxuRsBosgkaTnD2/5ZjaPpZ7dO78XO1gziv2JXxGr [email protected]
これをコピーして、Bitbucketに登録します。
Bitbucketに公開鍵を登録
Bitbucketにログインしたあと、以下のGif画像の手順にしたがって、SSH鍵を登録するページまで遷移してください。
先程コピーした公開鍵を Key
の部分にはりつけてましょう。
label
はわかりやすい名前であればなんでもOKです。
pushしてみる
それでは、もう一度、pushしてみましょう!
$ git push -u origin master
エラーが発生せずにpushできたら完璧です!
お疲れ様でした!
Author And Source
この問題について(【Railsチュートリアル第一章】BitbucketでPermission denied (publickey)と言われたときの対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/yuta-ushijima/items/a0e0a6a20eaac663a8d0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .