2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

git cloneでPermission deniedされたときの対策

Posted at

はじめに

git cloneをしようとしたとき、以下のようなエラーが起こったことはないでしょうか。

PS E:\workspace\Python\latin-descendant-predictor\data\colab> git clone git@github.com:halhorn/deep_dialog_tutorial.git
Cloning into 'deep_dialog_tutorial'...
Load key "C:\\Users\\paka\\.ssh\\": Is a directory
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

私も同じエラーに直面したので、本記事ではその解決に至った経緯を記載します。
ユーザーの環境によっては解決策が違って役に立たないかも知れませんが、誰かの一助になることを望みます。

正しいサーバーに接続しているか確認

git@gtihbu.comなど、サーバー名を打ち間違えていると当然ですが接続できないのでそこをまず確認します。[1]

$ 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関連のコマンドがWindowsはあまり揃っていないので、私はWSL2を使ってやりました。
以下、特に説明がない限りWSL2を使っているとします。
ログが見切れますが、その場合はファイルに出力してください。

ssh -vT git@github.com > log.txt

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

SSHを使うには、プライベートキー・パブリックキーのペアが必要なので、その準備をします。
まず、ssh-agent を有効にします。

$ eval "$(ssh-agent -s)"
> Agent pid 59566

次に、既にプライベートキーを生成しSSHに読み込ませているかを確認します。

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

ここで上記のように長い英数字が表示される場合、プライベートキーはSSHに読み込まれています。
表示されない場合、読み込まれていません。その場合、キーを新たに作成します。

SSHキーの生成

ssh-keygenでキーを生成します。[2]

$ ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private algorithm key pair.

ed25519は何でも結構です。"your_email@example.com"は自分のメールアドレスにしてください。

> Enter a file in which to save the key (/c/Users/you/.ssh/id_algorithm):[Press enter]

/c/Users/you/.ssh/id_algorithmが既定の場所となりますので、Enterを押してください。

> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

パスワードを同じものを2回入れてください。

SSH キーを ssh-agent に追加

SSHプライベートキーをssh-agent に追加します(.pubが付いているものではありません)。

$ ssh-add ~/.ssh/id_ed25519

SSHキーをGitHubに登録

SSHパブリックキー(プライベートキーではないです)をクリップボードにコピーします。[3]

clip.exe < id_ed25519.pub

GitHubの任意のページで右上隅にあるプロファイルの画像をクリックし、次に設定をクリックします。

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

[SSH keys]で、[New SSH key]、もしくは[Add SSH key]をクリックします。

  • Title: 分かりやすい説明をつけてください。例えば、「職場のデスクトップ」など
  • Key type: Authentication Key
  • Key: 先程コピーしたSSHパブリックキーを貼り付けてください

[Add SSH key]をクリックしてください。

ssh_configの設定

ssh_configの設定をします。Git for windowsの場合
C:\Program Files\Git\etc\ssh\ssh_config
にssh_configがあります。

Host github.com
  User git
  HostName github.com
  IdentityFile (プライベートキーのパス)
  IdentitiesOnly yes

通信の確認

root@home-PC:/mnt/c/users/paka/.ssh# ssh -T git@github.com
Enter passphrase for key '/root/.ssh/id_ed25519':
Hi Dixhom! You've successfully authenticated, but GitHub does not provide shell access.

きちんとGitHubと通信が取れるようです。

git clone

Powershell

PS E:\workspace\Python\latin-descendant-predictor\data\colab> git clone git@github.com:halhorn/deep_dialog_tutorial.git
Cloning into 'deep_dialog_tutorial'...
Enter passphrase for key 'C:\Users\paka\.ssh\id_ed25519':
remote: Enumerating objects: 150, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (15/15), done.
Receiving objremote: Total 150 (delta 8), reused 0 (delta 0), pack-reused 135
Receiving objects: 100% (150/150), 3.59 MiB | 2.04 MiB/s, done.

Resolving deltas: 100% (66/66), done.
Checking connectivity... done.

成功しました!

総括

原因はSSHキーでした。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?