GitHubでSSHキー登録後に「Permission denied (publickey).」が出る

ローカルの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).」が表示されたため、そのときの対応メモ。

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の名前のとおりに実行する必要がある。

参考