ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
記事のバージョン: GitHub.com

Error: Permission denied (publickey)

「Permission denied」エラーは、サーバーが接続を却下したことを示します。 原因はいくつか考えられますが、最も一般的な例を説明します。

sudo コマンドを Git で使用すべきか

sudo コマンドは Git で使用するべきではありません。 sudo を使用しなければならない特別な理由がある場合は、各コマンドで使用するようにしてください (その時点で、シェルを root として取得するために su を使用するほうがおそらくベターです)。 sudo なしで SSH キーを使用し、sudo git push などのコマンドの使用を試す場合は、生成したのと同じキーを使用しないでしょう。

正しいサーバーに接続していることを確認する

キーボードで入力するというのは骨の折れる作業です。 入力内容に注意を払ってください。「githib.com」や「guthub.com」に接続することはできません。 一部の場合、企業ネットワークによって DNS レコードの解決の問題も発生します。

正しいドメインに接続していることを確かめるには、以下のコマンドを入力します:

$ ssh -vT git@github.com
> OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
> debug1: Reading configuration data /Users/you/.ssh/config
> debug1: Reading configuration data /etc/ssh_config
> debug1: Applying options for *
> debug1: Connecting togithub.com
[IP ADDRESS] port 22.

設定をHTTPS を介した SSHを使用するようオーバーライドしていない限り、接続はポート 22で行われるはずです。

常に「git」ユーザーを使用する

リモート URL 向けを含むすべての接続は、「git」ユーザーとして行われる必要があります。 GitHub のユーザ名で接続しようとすると、失敗します:

$ ssh -T GITHUB-USERNAME@github.com
> Permission denied (publickey).

接続が失敗し、GitHubのユーザ名でリモート URL を使用している場合は、「git」ユーザを使用するようリモート URL を変更できます。

以下を入力して接続を確認します:

$ ssh -T git@github.com
> Hi username! You've successfully authenticated...

使用中のキーを持っていることを確認する

  1. ターミナルターミナルGit Bashターミナル を開いてください。

  2. プライベートキーを生成し SSH に読み込ませていることを確認します。 OpenSSH 6.7 より前のバージョンを使用している場合:

# バックグラウンドで SSH エージェントを開始
$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ ssh-add -l
> 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降のバージョンを使用している場合::

# バックグラウンドで SSH エージェントを開始
$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

GitHub Desktop(https://desktop.github.com/) をインストールしてある場合は、それを使ってリポジトリをクローンできます。その場合は SSH キーを扱わずに済みます。これにはGit Bashツールも付属しています。Git Bashは Windows で git コマンドを実行するのに推奨される方法です。

  1. Git Bash を使っている場合は ssh-agent をオンにします:

    # ssh-agent をバックグラウンドで起動
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566

    Git for Windowsなど、他のターミナルプロンプトを使っている場合は ssh-agent を有効にしてください。

    # ssh-agent をバックグラウンドで起動
    $ eval $(ssh-agent -s)
    > Agent pid 59566
  2. プライベートキーを生成し SSH に読み込ませていることを確認します。 OpenSSH 6.7 かそれより前のバージョンを使用している場合:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降を使用している場合:

$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
  1. ターミナルターミナルGit Bashターミナル を開いてください。

  2. プライベートキーを生成し SSH に読み込ませていることを確認します。 OpenSSH 6.7 かそれより前のバージョンを使用している場合:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

    OpenSSH 6.8 以降を使用している場合:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E md5
    > 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)
  1. ターミナルターミナルGit Bashターミナル を開いてください。

  2. プライベートキーを生成し SSH に読み込ませていることを確認します。 OpenSSH 6.7 より前のバージョンを使用している場合:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降を使用している場合:

# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
> Agent pid 59566
$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/you/.ssh/id_rsa (RSA)

ssh-add コマンドによって、英数字の長い文字列がプリントアウトされるはずです。 何もプリントされない場合は、新しい SSH キーを生成して GitHubと関連付ける必要があります。

参考: 多くのシステムでは、デフォルトの秘密鍵 (~/.ssh/id_rsa~/.ssh/id_dsa および ~/.ssh/identity) は、SSH 認証エージェントに自動追加されます。 キーの生成時にファイル名を上書きしていない限り、ssh-add path/to/key を実行する必要はありません。

詳細を確認する

git@github.com への接続を試して、キーが使用されていることを確認することもできます。

$ ssh -vT git@github.com
> ...
> debug1: identity file /Users/you/.ssh/id_rsa type -1
> debug1: identity file /Users/you/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/you/.ssh/id_dsa type -1
> debug1: identity file /Users/you/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/you/.ssh/id_rsa
> debug1: Trying private key: /Users/you/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).

この例では、SSH が使用するキーはありませんでした。 「identity file」行の最後の「-1」は、SSH が使用するファイルを見つけることができなかったことを示します。 その後、「Trying private key」の行でもファイルが見つからなかったことが示されています。 ファイルが存在する場合は、これらの行はそれぞれ「1」と「Offering public key」になります。

$ ssh -vT git@github.com
> ...
> debug1: identity file /Users/you/.ssh/id_rsa type 1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Offering RSA public key: /Users/you/.ssh/id_rsa

公開鍵がアカウントに添付されていることを確認する

公開鍵を GitHub に提供して、安全な接続を確立する必要があります。

  1. ターミナルを開きます。

  2. バックグラウンドで SSH エージェントを開始します。

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. 自分の公開鍵のフィンガープリントを見つけてメモします。 OpenSSH 6.7 より前のバージョンを使用している場合:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降を使用している場合:

$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
  1. 任意のページの右上で自分のプロフィール画像をクリックし、[Settings] をクリックします。

    ユーザバーの設定アイコン

  2. ユーザ設定のサイドバーで [SSH and GPG keys] をクリックします。

    認証キー

  3. SSH キーのリストを、ssh-add コマンドの出力と比較します。

    GitHub の SSH キーのリスト

  1. コマンドラインを開きます。

  2. バックグラウンドで SSH エージェントを開始します。

    $ ssh-agent -s
    > Agent pid 59566
  3. 自分の公開鍵のフィンガープリントを見つけてメモします。 OpenSSH 6.7 より前のバージョンを使用している場合:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降を使用している場合:

$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
  1. 任意のページの右上で自分のプロフィール画像をクリックし、[Settings] をクリックします。

    ユーザバーの設定アイコン

  2. ユーザ設定のサイドバーで [SSH and GPG keys] をクリックします。

    認証キー

  3. SSH キーのリストを、ssh-add コマンドの出力と比較します。

    GitHub の SSH キーのリスト

  1. ターミナルを開きます。

  2. バックグラウンドで SSH エージェントを開始します。

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. 自分の公開鍵のフィンガープリントを見つけてメモします。 OpenSSH 6.7 より前のバージョンを使用している場合:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降を使用している場合:

$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
  1. 任意のページの右上で自分のプロフィール画像をクリックし、[Settings] をクリックします。

    ユーザバーの設定アイコン

  2. ユーザ設定のサイドバーで [SSH and GPG keys] をクリックします。

    認証キー

  3. SSH キーのリストを、ssh-add コマンドの出力と比較します。

    GitHub の SSH キーのリスト

  1. ターミナルを開きます。

  2. バックグラウンドで SSH エージェントを開始します。

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  3. 自分の公開鍵のフィンガープリントを見つけてメモします。 OpenSSH 6.7 より前のバージョンを使用している場合:

    $ ssh-add -l
    > 2048 a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)

OpenSSH 6.8 以降を使用している場合:

$ ssh-add -l -E md5
> 2048 MD5:a0:dd:42:3c:5a:9d:e4:2a:21:52:4e:78:07:6e:c8:4d /Users/USERNAME/.ssh/id_rsa (RSA)
  1. 任意のページの右上で自分のプロフィール画像をクリックし、[Settings] をクリックします。

    ユーザバーの設定アイコン

  2. ユーザ設定のサイドバーで [SSH and GPG keys] をクリックします。

    認証キー

  3. SSH キーのリストを、ssh-add コマンドの出力と比較します。

    GitHub の SSH キーのリスト

GitHub で公開鍵が見つからない場合は、GitHub に SSH キーを追加してコンピュータと関連付ける必要があります。

警告: 見慣れない SSH キーが GitHub で見つかった場合は、すぐにそれを削除し、さらに支援が必要な場合は GitHub Support または GitHub Premium Support に問い合わせてください。 確認できない公開鍵は、潜在的なセキュリティ上の問題を示している可能性があります。 詳細は「SSH キーをレビューする」を参照してください。

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください