4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

秘密鍵にパスフレーズが設定されているとSourceTreeを使ってBitbucketのリモートにプッシュできない

Last updated at Posted at 2018-08-22

困ったこと

SourceTreeを使ってBitbucketのリモートレポジトリにソースをコミットできない(コンソールでgit pushは可能)

前提条件

  • OSはmacOS
  • SSH秘密鍵を~/.ssh/id_rsaとして生成済み
  • Bitbucketの自分のアカウントのSSH鍵に~/.ssh/id_rsa.pubの内容を設置済み
  • Bitbucketにレポジトリは作成済み
  • SourceTreeのリモートレポジトリはアプリの次の手順で設定済み(メニュー>リポジトリ>リポジトリ設定>リモート>追加>URLの右の地球儀ボタンを押してBitbucketを指定)

現象

SourceTreeのプッシュを実行すると下記のエラーメッセージが表示されプッシュに失敗する。

git@bitbucket.org: Permission denied (publickey).

原因

SSH秘密鍵~/.ssh/id_rsaにパスフレーズが設定されていると失敗する。
確かにコンソール上でプッシュした時には下記のようにパスフレーズを聞かれていた。

$ git push -u origin master
Enter passphrase for key '/Users/xxx/.ssh/id_rsa':

次のようにパスフレーズを削除したらプッシュに成功した。

$ openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa2
$ mv ~/.ssh/id_rsa2 ~/.ssh/id_rsa
$ chmod 600 ~/.ssh/id_rsa

mikkameさんからコメント頂きまして、下記の様にssh-agentに秘密鍵を登録することでパスフレーズ付きの秘密鍵でもプッシュに成功しました。

$ ssh-add -K

調べたところmacOS標準のsshクライアントはデフォルトでkeychainの情報を参照できるらしく、ssh-addを使って秘密鍵をkeychainに登録しておけばパスフレーズ付きでもsshクライアントが利用できる様になるらしい。

しかし、失敗時のエラーメッセージが不親切すぎるなぁ

4
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?