さむブログ

学生エンジニアのポートフォリオ

Githubにsshでアクセスできない時の応急処置

いつ起きたか?

Githubリポジトリにプロジェクトファイルを
git push origin master
しようとしたとき。
↓のようなエラーを頂いた。

$ git push origin master
Permission denied (publickey).
fatal: Could not read from remote repository.

原因

以下のような原因が考えられる。

  • GithubSSH keyの設定をしていない
  • そもそも公開鍵を作っていない
  • 昔作った公開鍵と最近作った公開鍵がごちゃ混ぜ
    ('Д') つらい

解決策

よくわからないなら、公開鍵を作り直すのが簡単!
過去を清算できてうれしい!!

ローカルに公開鍵を作る

まずは以下のコマンドを入力

$ 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

f:id:sam8:20180114112343j:plain

僕の場合はこれで解決しました