5月5日(日)のシュールストレミング試食会(通称シュールまつり)、無事に開催・開缶・完食いたしました!
Categories情報処理

Mac版のSourceTreeでプル/プッシュするときに「Permission denied」と言われる場合の対処方法

Date 2019/06/07 20:00  Author Yutaka  Tags HowTo Mac

 コマンドライン苦手系IT人間なので、GitHubはSourceTreeで使っています。
 ところが、いつ頃からかわからないのですが、たまにSourceTreeでGitHub(とかGitLabとか)にプル/プッシュしようとすると「Permission denied (publickey)」と言われるようになりました。公開鍵を設定し直すと出なくなるのですが、どうもめんどくさいし気持ちが悪いので対処方法を調べてみました。

原因

 調べたら、Macを再起動すると ssh agent に登録された鍵がまっさらになってしまうことが原因のようでした。なるほどエラーが出たり出なかったりするのはそういうことか……

対処方法

 以下のようにssh-addコマンドでGitHub用の秘密鍵を登録してあげればSourceTreeのエラーが出なくなります。

$ ssh-add ~/.ssh/(GitHub用の秘密鍵)

 GitLabも同じ。どうでもいいですが、GitLabはアカウントを追加するときにアカウントのパスワードじゃなくてアクセストークンを使う、ということを毎回忘れて「なんでアクセスできないんじゃぁ……」ってなる。

再起動しても消えないようにする

 ssh-addで登録しても再起動すると設定は消えてしまうので、再起動するたびにssh-addする必要があります。秘密鍵をキーチェインに登録して、キーチェインから自動的に読み込まれるように設定すればおk。

 まず、ssh-addコマンドで秘密鍵をキーチェインに登録します。-K オプションを入れるとキーチェインに追加されます。

$ ssh-add -K ~/.ssh/(GitHub用の秘密鍵)

 続いて .ssh/config に以下の内容を追加します。

Host *
  UseKeychain yes
  AddKeysToAgent yes

 これで再起動しても自動的に鍵が登録されるようになるハズ。

Back to Top