読者です 読者をやめる 読者になる 読者になる

メンチカツには醤油でしょ!!

ITエンジニア徒然 (AWS/Java/JavaScript/Google Spreadsheets/Jenkins/Mac/外部コミュニティ・勉強会レポ)

Gitでssh/cloneした時にPermission denied (publickey).

sshは通るけどcloneはできない

あると思います。そんな時のためのメモです。

Permission denied (publickey).
fatal: Could not read from remote repository.

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

これですよね。

ssh-keygenでid_rsa以外を指定

ssh-keygenした時にkeyのファイル名を変更していると上記のエラーが出ると思います。(たとえばgithub_id_rsa, github_id_rsa.pub のように)

GitHubのSettings⇒SSHで公開鍵登録しても、
sshは通るけど、cloneはできないという状態になると思います。謎。

この場合は、ssh-addをする必要があります。
デフォルトの名前(id_rsa)であれば生成時にssh-addされるようなのですが
自分でsshキー名を(変更)指定した場合はssh-addされないようです。

一発で決めたい

事前に色々やってた方はまず下記を。

~/.ssh $ vi known_hosts
(known_hostsに登録されていたら面倒なので一旦消しましょう。viの行削除はdd。保存して終了は:wq!です)
~/.ssh $ rm github*
(再度キーを生成しますので一旦うまくいかなかった生成キー消しちゃいましょう)

綺麗になった所で、下記のように一通でいきましょう!

~/.ssh $ ssh-keygen -t rsa -C "my-mailaddress-for-git@mail.com"

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/my-computer-name/.ssh/id_rsa): github_id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in github_id_rsa.
Your public key has been saved in github_id_rsa.pub.
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq my-mailaddress-for-git@mail.com
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   o             |
|  . *            |
| . * X   .       |
|o * @ @ S        |
|o+.O X +         |
|Eo++* +          |
|.=+=++ +         |
|..oo o+ .        |
+----[SHA256]-----+

(ここでGitHubにてSettings->SSHを開き、生成した鍵の公開鍵の方(github_id_rsa.pubの方)を登録しましょう)


~/.ssh $ ssh -i github_id_rsa git@github.com The authenticity of host 'github.com (192.30.253.113)' can't be established. RSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyzabcdefghijklmnopq. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts. PTY allocation request failed on channel 0 Hi ryoichi-obara! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed. ~/.ssh $ ssh-add ~/.ssh/github_id_rsa Identity added: /Users/my-computer-name/.ssh/github_id_rsa (/Users/my-computer-name/.ssh/github_id_rsa) 

これでも
Could not open a connection to your authentication agent.
などとエラーが出る場合はssh-addする前にこのようにしましょう。

~/.ssh $ eval "$(ssh-agent -s)"

Agent pid 59566

~/.ssh $ ssh-add ~/.ssh/github_id_rsa

Enter passphrase for ~/.ssh/github_id_rsa: 

$ git clone git@github.com:ryoichi-obara/test.git

(成功)

参考

GitHubSSHに関してのドキュメント

Error: Permission denied (publickey) - User Documentation

過去にこんな記事も書いてました

ryoichi0102.hatenablog.com

ryoichi0102.hatenablog.com