Githubにsshでアクセスできない時の応急処置
いつ起きたか?
Githubのリポジトリにプロジェクトファイルを
git push origin master
しようとしたとき。
↓のようなエラーを頂いた。
$ git push origin master Permission denied (publickey). fatal: Could not read from remote repository.
原因
以下のような原因が考えられる。
解決策
よくわからないなら、公開鍵を作り直すのが簡単!
過去を清算できてうれしい!!
ローカルに公開鍵を作る
まずは以下のコマンドを入力
$ cd ~/.ssh $ ssh-keygen -t rsa -C "hogehoge@gmail.com"
やってることは、ホームディレクトリ内の.sshフォルダ内で公開鍵を作ってるだけ('ω')
.sshフォルダ無くても勝手に生成されるから問題なし
うまく実行できると以下のような結果になる
Generating public/private rsa key pair. Enter file in which to save the key (/<ホームディレクトリ>/.ssh/id_rsa):
保存場所聞いてるからとりあえずEnter押すとこうなった
/<ホームディレクトリ>/.ssh/id_rsa already exists. Overwrite (y/n)?
原因発覚!
もう元々あったのか(汗)
上書きするからyを入力
その次は
Enter passphrase (empty for no passphrase): Enter same passphrase again:
これは2回パスワードを打てって言ってるから打っておきましょう
The key fingerprint is: SHA256:<文字列> <アドレス> The key's randomart image is: +---[RSA 2048]----+ | . .o . | | +.= + | | .O o O | |. o. * B . | |.+o=o.+ S | | o==+.o | | .o..+o. | |o. .+o++ | |+ .=E* | +----[SHA256]-----+
これで山場は越えました!(^^)!
ssh-agentを自動で起動するようにする
eval $(ssh-agent -s)
で起動するたびにssh-agentが裏で起動されて、
パスフレーズとかの入力が不要になるらしいです(よく分かってない)
$ eval $(ssh-agent -s) Agent pid <数字5桁?>
ssh-agentに公開鍵を追加する
$ ssh-add ~/.ssh/id_rsa Enter passphrase for /<ホームディレクトリ>/.ssh/id_rsa: Identity added: /<ホームディレクトリ>/.ssh/id_rsa (/<ホームディレクトリ>/.ssh/id_rsa)
パスフレーズ打ってIdentity added
が出れば成功!
GitHubに公開鍵を登録
Github -> Settings -> SSH and GPG keys で公開鍵を登録する。
~/.ssh/id_rsa.pubの中身をコピーすればいいのだけれど、開くのが面倒くさいのでコマンドラインからコピーしましょう。
$ clip < ~/.ssh/id_rsa.pub
僕の場合はこれで解決しました