Sourcetree で GitHub に 新規プロジェクトの main ブランチを push しようとしたら、GitHub が
git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/main:refs/heads/main
Pushing to ssh://github.com/XXXXXXX/sXXXXXXX.git
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
というエラーを出して失敗する。
よくわからないが、どうも「Permission denied (publickey)」というメッセージから、公開鍵(PublicKey)の問題のようだ。
いや、もちろん思い当たる(^^;;;
ええと、SSH 接続用の秘密鍵も公開鍵も作ってましぇん(^^;;;
というわけで、下記に対応手順。
やり方は GitHub Docs に載っている手順通り。
この俺のブログ(このページ)も含めて(笑)、ネット上の情報は古くなっているものが多いので、GitHub Docs のような正規のドキュメントを参照した方がいいよ。
・新しい SSHキー(秘密鍵、公開鍵)の作成
※ GitHub に登録しているメールアドレスで作成
※ ディフォルトの名前を変更して作成(ケツに GitHub と付ける)
%
ssh-keygen -t ed25519 -C "hogehoge@exsample.com"Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/hogehoge/.ssh/id_ed25519): /Users/hogehoge/.ssh/id_ed25519_GitHub
Enter passphrase (empty for no passphrase): <パスフレーズ>
Enter same passphrase again: <パスフレーズ>
Your identification has been saved in /Users/hogehoge/.ssh/id_ed25519_GitHub
Your public key has been saved in /Users/hogehoge/.ssh/id_ed25519_GitHub.pub
The key fingerprint is:
SHA256:oKy<略>h4 hogehoge@exsample.com
The key's randomart image is:
+--[ED25519 256]--+
| .=.. |
| o.+ |
| . .=E |
| . . . ..++o. |
| + o S ..+.+ o|
| o . + . = =+|
| o . B.*|
|oo. . + X+|
|*=. . =o=|
+----[SHA256]-----+
・ssh-agent の起動
% eval "$(ssh-agent -s)"
Agent pid 6763
・~/.ssh/config ファイルの作成
% open ~/.ssh/config
The file /Users/hogehoge/.ssh/config does not exist.
存在していないので空ファイルを作成
% touch ~/.ssh/config
・config ファイルの編集
% vi ~/.ssh/config
% cat ~/.ssh/config
Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519_GitHub
※ UseKeychain yes 行を書かなければ、キーにパスフレーズを追加しないようにできるらしい
・作成した SSH 秘密鍵を ssh-agent に追加する
% ssh-add --apple-use-keychain ~/.ssh/id_ed25519_GitHub
Enter passphrase for /Users/hogehoge/.ssh/id_ed25519_GitHub: <パスフレーズ>
Identity added: /Users/hogehoge/.ssh/id_ed25519_GitHub (hogehoge@exsample.com)
・SSH 公開鍵をクリップボードにコピー
% pbcopy < ~/.ssh/id_ed25519_GitHub.pub
※ .pub がついている公開鍵をコピーしよう。俺は .pub のついていない秘密鍵の方をコピーして GitHub から「Key is invalid. You must supply a key in OpenSSH public key format」と叱られた
・New SSH key の登録
Web で GitHub にログインし、設定画面を開く→[アクセス] セクションの[SSH キーと GPG キー]を開き、New SSH Key の登録を行う
以上の処置で、無事 push ができるようになった。
よかった、よかった(笑)