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/mainPushing to ssh://github.com/XXXXXXX/sXXXXXXX.gitgit@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_GitHubEnter passphrase (empty for no passphrase): <パスフレーズ>Enter same passphrase again: <パスフレーズ>Your identification has been saved in /Users/hogehoge/.ssh/id_ed25519_GitHubYour public key has been saved in /Users/hogehoge/.ssh/id_ed25519_GitHub.pubThe key fingerprint is:SHA256:oKy<略>h4 hogehoge@exsample.comThe 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/configThe file /Users/hogehoge/.ssh/config does not exist.
存在していないので空ファイルを作成% touch ~/.ssh/config
・config ファイルの編集
% vi ~/.ssh/config% cat ~/.ssh/configHost github.comAddKeysToAgent yesUseKeychain yesIdentityFile ~/.ssh/id_ed25519_GitHub※ UseKeychain yes 行を書かなければ、キーにパスフレーズを追加しないようにできるらしい
・作成した SSH 秘密鍵を ssh-agent に追加する
% ssh-add --apple-use-keychain ~/.ssh/id_ed25519_GitHubEnter 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 ができるようになった。
よかった、よかった(笑)