今回はGithubへのSSH認証鍵のお話です。
割とここでつまずくポイントが何箇所かあったので共有がてら記事に起こしてみた。
この記事では、Githubへのpull
,push
,clone
を鍵認証で行うまでの手順をまとめておきます。
公開鍵・秘密鍵の作成
ssh用のディレクトリに移動
cd ~/.ssh
鍵の作成を行う
ssh-keygen -t rsa
そのままエンターキーを3回押せばid_rsa
とid_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を選択、コピペしておきます。
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鍵認証でアクセスできるようになったのではないでしょうか。
コメント