Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2023-01-18. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

Error: Permission denied (publickey)

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

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

sudo コマンドや管理者特権 (管理者権限など) を Git で使用しないでく� さい。 あなたが使用 しなければならない 非常に良い理由sudoがある� �合は、すべてのコマンドでそれを使用していることを確認してく� さい(おそらくその時点でシェルをルートとして取得するために使用suすることをお勧めします)。 sudo を使用せずに SSH キーを生成して、sudo git push のようなコマンドを使用しようとすると、生成したものと同じキーは使用されません。

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

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

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

$ ssh -vT git@ホスト名
> 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 ホスト名 port 22.

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

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

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

$ ssh -T GITHUB-USERNAME@ホスト名
> Permission denied (publickey).

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

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

$ ssh -T git@ホスト名
> 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
  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 Server に関連付ける必要があります。

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

詳細を確認する

git@[ホスト名] に接続してキーが使用されていることを確認することもできます。

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

  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. 任意のページで、右上隅にあるプロファイルの画像をクリックし、次に[設定]をクリックします。

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

  5. ユーザー設定サイドバーで、SSH キーと GPG キー をクリックします。 認証キー

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

  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. 任意のページで、右上隅にあるプロファイルの画像をクリックし、次に[設定]をクリックします。

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

  5. ユーザー設定サイドバーで、SSH キーと GPG キー をクリックします。 認証キー

  6. SSH キーのリストを、ssh-add コマンドの出力と比較します。 GitHub Enterprise Server の 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. 任意のページで、右上隅にあるプロファイルの画像をクリックし、次に[設定]をクリックします。

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

  5. ユーザー設定サイドバーで、SSH キーと GPG キー をクリックします。 認証キー

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

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

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