エラーの対処
先日、GitHubにpushしようとすると、以下のようなエラーが出現。
$git push -u origin master
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
翻訳してみると、、
Permission denied (publickey)
→許可が拒否されました (公開鍵)
fatal: Could not read from remote repository
→致命的: リモート リポジトリから読み取れませんでした
Please make sure you have the correct access rights
and the repository exists.
正しいアクセス権を持っていることを確認してください
そしてリポジトリが存在します
調べていくと、SSH接続という単語が出てくる。
SSH接続とは
SSHとは「Secure Shell」の略で、ネットワークに接続された機器を遠隔操作し、管理するための手段。
各種サーバー機器は、ほとんどの場合、操作をする人から離れた場所にある。そのため、この操作をする人だけが安全にインターネット経由で接続できる手段が必要になる。
GitHubにSSH接続する為には、公開鍵と秘密鍵が必要になる。
公開鍵
サーバー側に持たせておく鍵。
作ったときには「id_rsa.pub」という名前で作成される。
秘密鍵
クライアント側で保有しておく鍵。
誰にも渡してはいけない。
公開鍵と秘密鍵の生成
まずは、公開鍵と秘密鍵のペアの作成
$cd ~/.ssh
ファイルが何もないか確認
$ls
何もないことが確認できたら、鍵の生成
$ssh-keygen -t rsa
何か聞かれたら3回エンターを押せば、
id_rsa(秘密鍵)
とid_rsa.pub(公開鍵)
の2つの鍵が生成されます。
既にid_rsaが存在する人は上書きされてしまうので注意です。
id_rsa.pub(公開鍵)のファイルの中身をコピー
$ cat ~/.ssh/id_rsa.pub
公開鍵をGitHubにアップ
GitHubのページに行き、右上をクリック後「settings」をクリック。
Your Profile画面に行くので、「SSH and GPG keys」をクリック。
New SSH keyをクリックし、公開鍵をアップ。
接続を確かめる
$ ssh -T git@github.com
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
上記のような文言が返ってきたら接続完了
再びGitHubにプッシュし、完了。