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

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@hostname
> 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 to hostname [IP ADDRESS] port 22.

接続はポート 22で行われるはずです。

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

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

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

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

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

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

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

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

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

    # バックグラウンドで ssh-agent を開始
    $ 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-agent を開始
    $ 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をインストールしてあるなら、それを使ってSSHキーを扱わずにリポジトリをクローンできます。 [object Object] には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 より前のバージョンを使用している場合:

    # バックグラウンドで ssh-agent を開始
    $ 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-agent を開始
    $ 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 より前のバージョンを使用している場合:

    # バックグラウンドで ssh-agent を開始$ 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-agent を開始
$ 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 Enterpriseと関連付ける必要があります。

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

詳細を確認する

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

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

  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. In the upper-right corner of any page, click your profile photo, then click Settings.

    ユーザバーの [Settings(設定)] アイコン

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    GitHub Enterprise の 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)
  4. In the upper-right corner of any page, click your profile photo, then click Settings.

    ユーザバーの [Settings(設定)] アイコン

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    GitHub Enterprise の 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)
  4. In the upper-right corner of any page, click your profile photo, then click Settings.

    ユーザバーの [Settings(設定)] アイコン

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    GitHub Enterprise の 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)
  4. In the upper-right corner of any page, click your profile photo, then click Settings.

    ユーザバーの [Settings(設定)] アイコン

  5. In the user settings sidebar, click SSH and GPG keys.

    Authentication keys

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

    GitHub Enterprise の SSH キーのリスト

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

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

担当者にお尋ねください

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

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