ポートフォリオを公開したく、GitHub に新しいアカウントを作ったのですが、

1git@github.com: Permission denied (publickey).
2fatal: Could not read from remote repository.
3
4Please make sure you have the correct access rights
5and the repository exists.

の解決に割と手間取ってしまったのでログします。

鍵を作って GitHub に登録する

GitHub と通信するための鍵を作ります。

1$ ssh-keygen -t rsa

できた公開鍵を GitHub に登録します。

鍵はすでに複数あるため、今回は github_id_rsa という名前の鍵を作りました。

結論としては、これがイケなかった感じです。

接続確認

鍵登録後 SSH コマンドで GitHub に挨拶してみます。

1$ ssh -T git@github.com

を実行してみて、

1Hi [account_name] You've successfully authenticated, but GitHub does not provide shell access.

がかえってくれば接続 OK です。
これを目指します。

パーミッションをチェックする

鍵のパーミッションがゆるい場合です。

これは、次のようにデカデカと警告が出るのですぐに分かりますよね。

1@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
3@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4Permissions 0755 for '/Users/atuweb/.ssh/github_id_rsa' are too open.
5It is required that your private key files are NOT accessible by others.
6This private key will be ignored.
7Load key "/Users/atuweb/.ssh/github_id_rsa": bad permissions
8git@github.com: Permission denied (publickey).

これは鍵のパーミッションを適切に締めてあげれば OK です。

chmod を実行します。

1$ chmod 600 ~/.ssh/github_id_rsa
2$ chmod 644 ~/.ssh/github_id_rsa.pub

権限変更後、この様になっていれば OK です。

1$ ls -la ~/.ssh/ | grep github_id_rsa
2-rw-------   1 atuw  staff  1831 May  4 07:48 github_id_rsa
3-rw-r--r--   1 atuw  staff   404 May  4 07:48 github_id_rsa.pub

接続時の鍵をチェックする

v オプションを付けることで、SSH 接続のデバッグログをチェックすることができます。

1$ ssh -vT git@github.com

を実行します。

すると、ズラズラとログが出てきます。

1OpenSSH_7.9p1, LibreSSL 2.7.3
2debug1: Reading configuration data /Users/atuweb/.ssh/config
3debug1: Reading configuration data /etc/ssh/ssh_config
4debug1: /etc/ssh/ssh_config line 48: Applying options for *
5debug1: /etc/ssh/ssh_config line 52: Applying options for *
6debug1: Connecting to github.com port 22.
7debug1: Connection established.
8debug1: identity file /Users/atuweb/.ssh/id_rsa type -1
9:

なんだって !

GitHub に登録した鍵は github_id_rsa ですが、どうやら id_rsa が使われているようです。

これでは認証できないですよね。

今回の原因

今回は SSH の設定が誤っていました。

はじめ、

1$ vim ~/.ssh/cofig
2Host github
3  User git
4  Port 22
5  HostName github.com
6  IdentityFile  ~/.ssh/github_id_rsa
7  IdentitiesOnly yes

というように 設定を入れていました。

ホストを github としていたため、 github.com へ接続するときにこの設定がマッチしていなかったのですね。

SSH 設定を次に修正すると、問題なく接続できました。

1$ vim ~/.ssh/cofig
2Host github github.com
3  User git
4  Port 22
5  HostName github.com
6  IdentityFile  ~/.ssh/github_id_rsa
7  IdentitiesOnly yes

わかってしまえばツマラナイミスでした。

https://qiita.com/tdrk/items/a0554763c29f60e347b5

https://qiita.com/shizuma/items/2b2f873a0034839e47ce#%E8%BF%BD%E8%A8%98-2015531 https://qiita.com/nyanchu/items/32d65c4c36315b876d38