4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

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

困ったこと

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クライアントが利用できる様になるらしい。

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
4
Help us understand the problem. What are the problem?