Skip to main content

Error: Permission denied (publickey)

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

Platform navigation

Note

この記事には、github.com ドメインを使うコマンドまたは例が含まれています。 octocorp.ghe.com など、別のドメインで GitHub にアクセスすることもできます。

sudo コマンドまたは管理者特権を Git で使用する必要がありますか?

sudo コマンドや管理者特権 (管理者権限など) を Git で使用しないでください。

お客様が使用sudoしなければならない_非常に良い理由_がある場合は、すべてのコマンドでそれを使用していることを確認してください。 sudo を使用せずに SSH キーを生成して、sudo git push のようなコマンドを使用しようとすると、生成したものと同じキーは使用されません。

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

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

Shell
ssh -vT git@github.com

次のように出力されます。

> OpenSSH_8.1p1, LibreSSL 2.7.3
> debug1: Reading configuration data /Users/YOU/.ssh/config
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug1: /etc/ssh/ssh_config line 47: Applying options for *
> debug1: Connecting to github.com port 22.

SSH over HTTPS を使用するように設定をオーバーライドしない限り、接続はポート 22 で行う必要があります。

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

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

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

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

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

Shell
ssh -T git@github.com

次のように出力されます。

> Hi USERNAME! You've successfully authenticated...

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

  1. [ターミナル][ターミナル][Git Bash] を開きます。

  2. プライベートキーを生成し SSH に読み込ませていることを確認します。

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    

GitHub Desktop をインストール済みの場合、これを使って SSH キーを扱わずにリポジトリをクローンできます。

  1. Git Bash を使用している場合は、ssh-agent を有効にします。

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    Git for Windows など別のターミナル プロンプトを使用している場合は、ssh-agent を有効にします。

    # start the ssh-agent in the background
    $ eval $(ssh-agent -s)
    > Agent pid 59566
    

    Note

    上記の eval コマンドは、環境内で ssh-agent を手動で開始します。 ssh-agent が既にバックグラウンド システム サービスとして実行されている場合、これらのコマンドは失敗する可能性があります。 その場合は、お使いの環境に関連するドキュメントを確認してください。

  2. プライベートキーを生成し SSH に読み込ませていることを確認します。

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  1. [ターミナル][ターミナル][Git Bash] を開きます。

  2. プライベートキーを生成し SSH に読み込ませていることを確認します。

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    

このコマンドは ssh-add 、数字と文字の長い文字列を出力 する必要があります 。 何も出力されない場合は、新しい SSH キーを生成し、それを GitHub Enterprise Cloud に関連付ける必要があります。

Tip

ほとんどのシステムでは、既定の秘密キー (~/.ssh/id_rsa~/.ssh/identity) が SSH 認証エージェントに自動的に追加されます。 キーを生成するときにファイル名をオーバーライドしない限り、ssh-add path/to/key を実行する必要はありません。

詳細を確認する

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

Shell
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」になります。

> ...
> 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 Enterprise Cloud に提供して、安全な接続を確立する必要があります。

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

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

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    
  3. 自分の公開鍵のフィンガープリントを見つけてメモします。

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. GitHub で、任意のページの右上隅にある自分のプロフィール写真をクリックしてから、 [設定] をクリックします。

  5. サイドバーの [アクセス] セクションで、 [ SSH キーと GPG キー] をクリックします。

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

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

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

    $ ssh-agent -s
    > Agent pid 59566
    
  3. 自分の公開鍵のフィンガープリントを見つけてメモします。

    $ ssh-add -l -E sha256
    > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/USERNAME/.ssh/id_rsa (RSA)
    
  4. GitHub で、任意のページの右上隅にある自分のプロフィール写真をクリックしてから、 [設定] をクリックします。

  5. サイドバーの [アクセス] セクションで、 [ SSH キーと GPG キー] をクリックします。

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

  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)
    
  4. GitHub で、任意のページの右上隅にある自分のプロフィール写真をクリックしてから、 [設定] をクリックします。

  5. サイドバーの [アクセス] セクションで、 [ SSH キーと GPG キー] をクリックします。

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

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

Warning

見慣れない SSH キーが GitHub Enterprise Cloud で見つかった場合は、すぐにそれを削除し、GitHub サポート ポータル にサポートを依頼してください。 確認できない公開鍵は、潜在的なセキュリティ上の問題を示している可能性があります。 詳しくは、「SSH キーをレビューする」を参照してください。