Dockerでgh-pages実行時に「Permission denied (publickey)」が出る原因と対策

2021.06.272026.04.19

![](dockergithub-pages-permission-denied/github-pages-permission-denied.png)

ちょっとした静的な Web アプリなら 無料で利用できるので GitHub Pages をデプロイ先によく利用しています。

デプロイの方法としては React 等の場合は Node.js で環境構築するため、gh-pages で 簡単に GitHub Pages へ公開することができます。

普段から GitHub に接続できている環境であれば gh-pages コマンドを実行しても特にエラーとなることはないはずなのですが、 Web の開発環境を Docker で構築している場合、gh-pages を実行すると以下のエラーになることがあります。

git@github.com Permission denied (publickey).

メッセージとしてはアクセス権がない系のエラーですが、今回はこのエラーの原因と対策として Docker コンテナ内で gh-pages を利用する際の注意点をご紹介します。

目次

  1. 原因:Docker コンテナ内に SSH の Private Key がない
  2. 対策:Docker コンテナ内に SSH キーを配置する
  3. gh-pages コマンドを確認する

原因:Docker コンテナ内に SSH の Private Key がない

gh-pages コマンドのデフォルトの設定では初回実行時に「gh-pages」ブランチが作成されることからもわかるように、 gh-pages コマンドは GitHub へ接続できることが前提となっています。

そのため、自分のリポジトリに対して git コマンドが実行できる状態でないと gh-pages は利用できません。

GitHub への認証方法として SSH Key を登録している場合は、gh-pages コマンド実行時にユーザ名とパスワードを聞かれることがありません。 そのため、Docker コンテナ内に SSH の Private Key を登録していない場合に「git@github.com Permission denied (publickey).」のエラーメッセージが表示されてしまいます。

普段から Docker コンテナではなくローカル環境で GitHub への接続して利用している場合に、このエラーがでると「なぜ?」と焦ることがありますが、開発環境を Docker コンテナで構築している場合、ローカルとは別の環境であるため、当然なにもしない場合は GitHub へ接続することができません。

対策:Docker コンテナ内に SSH キーを配置する

ローカル環境で GitHub へ接続できている場合は、ローカルに SSH キーが存在するはずです。

例えば、ホームディレクトリの「.ssh」ディレクトリに「id\_rsa」ファイルなどです。

ローカル環境の ssh キーが見つかれば、そのファイルを Docker コンテナ内の.ssh ディレクトリにコピーしましょう。

  • ローカル環境のSSHキー(id\_rsaなど)をコンテナ側からアクセスできるところに配置する
  • コンテナにbashでアクセスしSSHキーを.sshディレクトリに配置する

また、Git の初期設定 も忘れずに行いましょう。 具体的には以下の通り、Email とユーザ名を設定しましょう。

- git config --global user.email "you@example.com"
- git config --global user.name "Your Name"

gh-pages コマンドを確認する

SSH キーと Git の設定が完了した後は、gh-pages コマンドを実行してみましょう。

成功すれば、gh-pages ブランチがデプロイ対象のリポジトリに作成され、以下の URL で公開されているはずです。

https://\[自分の GitHub アカウント\].github.io/\[リポジトリ\]/

本格的なサーバー運用ならVPSがおすすめ

自宅のPCで構築した環境をインターネット上に公開して本番運用するなら、初期費用無料で導入しやすい「さくらのVPS」などのクラウド環境が便利です。

PR

次に読むおすすめ記事

WSL2とDockerを使ったWindows開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

WSL2+Dockerで作るWindows開発環境構築まとめ
WindowsマシンでWeb開発やバックエンド開発、AIアプリ開発を行う際、いまや欠かせない標準構成となったのが「Windows + WSL2 + Docker + VS Code」の組み合わせです。かつては「Web開発といえばMac一択」...