GithubへのSSH認証Keyを作成する

今回はGithubへのSSH認証鍵のお話です。
割とここでつまずくポイントが何箇所かあったので共有がてら記事に起こしてみた。

この記事では、Githubへのpull,push,cloneを鍵認証で行うまでの手順をまとめておきます。

目次

公開鍵・秘密鍵の作成

ssh用のディレクトリに移動

cd ~/.ssh

鍵の作成を行う

ssh-keygen -t rsa

そのままエンターキーを3回押せばid_rsaid_rsa.pubが作成されます。

鍵ファイルを別名で作成したい場合は
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
と聞かれたときに鍵の名前を決めてあげる。例)id_github_rsa

パスワードを聞かれるが入力しなくても良い。その場合は
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
に対して何も入力せずにEnterキーを押すだけで良い

作成された公開鍵をgithubに登録する

Githubへの登録がすでに完了している前提でお話します。Githubのページでログインを行います。

Github右上のマイアイコンからsettingsを選択、SSH and GPG keys >> New SSH key を選択
Titleにはわかりやすいように鍵名を記載
Keyには先程作成されたid_rsa.pubの中身をコピペする。(textエディタ等でid_rsa.pubを開き、暗号をコピペ)

これでgithubへの登録は終了です。

鍵認証でgit pullを試してみる

何も問題なければこの状態でgit pullが成功するはずです。みなさんどうでしょうか。

git pull origin master


これでパスワード要らずでpullができる…はず。

ですが、
以下で紹介するエラーが生じ、うまく行かない場合。対象法も合わせて紹介しておきます。

Username for 'https://github.com

鍵を設定したのにパスワードが問われる場合。
これは、おそらくGithubへの接続方法がsshで設定されていません。

git remote -v

>origin https://github.com/xxx/aaa.git (fetch)
>origin https://github.com/xxx/aaa.git (push)

上記の結果のようにhttps://になっていたら接続方法が正しくないのでSSHに変更させます。
githubのCodeページの↓CodeからSSHを選択、コピペしておきます。

github codeページ

git remote set-url originの後に先程のコピー内容を追加し、コマンドを実行します。

git remote set-url origin git@github.com:xxx/aaa.git

もう一度確認を行うと

git remote -v

> origin git@github.com:xxx/aaa.git (fetch)
> origin git@github.com:xxx/aaa3.git (push)

上記の結果となっていれば、Githubへの接続方法にsshとして設定されています。

fatal: Could not read from remote repository.

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

上記のエラーとなった場合は公開鍵・秘密鍵の作成時に鍵を別名で作成したことが原因だと考えられます。
秘密鍵はデフォルトではid_rsaを見にいくので、それ以外の鍵を生成した場合、その鍵を探し出してくれません。

この場合はconfigというファイルで鍵のありかの設定をしてあげます。

~/.ssh/configの設定

~/.ssh/configに以下の内容で記載しておきます。

Host github.com
HostName github.com
IdentityFile ~/.ssh/【作成した鍵名】
User 【githubのユーザー名】

【作成した鍵名】と【githubのユーザー名】は適宜置き換えて下さい。

~/.ssh/configの書き方

参考までに、~/.ssh/configに記述する際は以下のルールでconfigファイルを作成します。

  • HOST: ssh接続ホスト
    注意 git@github.com:xxx/aaa3.gitの場合@以降のgithub.comに合わせる必要がある。
    任意の名前と組み合わせる場合は HOST 【任意の名前】 github.comのように任意の名前の後にスペース区切りでgithub.comを記載すれば良い。
  • HostName: 接続先の設定(基本はgithub.com)
  • IdentityFile: 秘密鍵の名前またはパス
  • User: githubのユーザー名

Permissions xxx for '/.ssh/id_rsa' are too open.

別環境で作成した鍵などをコピーしたり環境を変えた場合によく起こることがあります。
鍵ファイルの権限が広すぎるのが原因のようです。権限を狭めていきます。
秘密鍵に対して

chmod 600 id_rsa

のように権限をrootユーザーのみに合わせていくと解消されます。

これでGithubへSSH鍵認証でアクセスできるようになったのではないでしょうか。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる