ローカルのMacでssh-keygenしたあとに、GitHubのSSHキーにid_rsa.pubを登録。
そのあとに接続確認として $ ssh -T git@github.com
を実行すると、問題なく Hi 256hax! You've successfully authenticated, but GitHub does not provide shell access.
と表示される。
ところが、GitHubの複数アカウント設定したあとにSSH接続すると、「Permission denied (publickey).」が表示されたため、そのときの対応メモ。
Agenda
GitHubの複数アカウント設定
まずは、正しい設定内容とコマンド。
自分の場合は、複数のGitHubアカウントを持っているため、複数の秘密鍵(id_rsa)と公開鍵(id_rsa.pub)がある。
その場合はその複数の公開鍵をGitHubに登録したあと ~/.ssh/config に設定を記述することで対応可能。以下は設定例。
~/.ssh/config
# --- 2019/04/28 Generated ---
Host 256hax-GitHub
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/256hax-GitHub
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
# --- 2019/04/28 Generated ---
Host 256worker-GitHub
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/256worker-GitHub
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
念のため、 ~/.ssh/known_hosts
に格納されているGitHubの行を削除する。
256haxというアカウント名で接続したい場合は以下のコマンドを打つ。
$ ssh -T 256hax-GitHub
Hi 256hax! You've successfully authenticated, but GitHub does not provide shell access.
256workerというアカウント名で接続したい場合は以下のコマンドを打つ。
$ ssh -T 256worker-GitHub
Hi 256worker! You've successfully authenticated, but GitHub does not provide shell access.
エラー「Permission denied (publickey)」の対応
調べてみると、たくさんの解決策が見つかるため、困っているひとが大勢いるようです。以下は自分がハマった内容をメモ。
Userの記述ミス
~/.ssh/config
# --- 2019/04/28 Generated ---
Host 256hax-GitHub
HostName github.com
User 256hax
PreferredAuthentications publickey
IdentityFile ~/.ssh/256hax-GitHub
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
【注意】上記は User が誤り
デバッグモードで接続確認すると以下のメッセージが表示される。
$ ssh -vT 256hax-GitHub
~~~省略~~~
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
256hax@github.com: Permission denied (publickey).
configのUserは、GitHubアカウント名を指定してはいけない。必ず git にしないと通らなかった。
コマンドミス
$ ssh -T 256hax@github.com
256hax@github.com: Permission denied (publickey).
【注意】上記はホスト指定が誤り
コマンドはconfigに記述したHostの名前のとおりに実行する必要がある。
参考
- gitとsshのconfigについて(備忘録)
- Multiple SSH Keys settings for different github account
↑ GitHubで複数アカウント設定する方法が書かれている