パソコンを買い替えた時に設定を引き継がずに新規に仕様すると、githubの鍵接続ができて、毎回焦る、ユゲタです。
だって、パソコンを買い替えた時って、なんにも設定が入っていない素の状態が、軽くてなんだかスッキリした感じがいいじゃないですか。
そして、キーチェーンなどに登録されたパスワードなども、引き継がれず、またはじめから覚えさせていく作業になるんですが、
設定を引き継ぐかどうかは、どっちがいいとは言い切れないので、「ひとそれぞれ」の思考でいいんですよね。
そうやって自分に言い聞かせてますが、githubの鍵がはずれて、cloneやpushをする際に気がついてアタフタするのが毎回の事です。
最近やたらと多くなってきた、MacOSを使って開発するパターンで毎回行う作業を備忘録として書いておきます。
githubの鍵登録が正常にできているか確認する方法
今使っているPCがgithubに登録されているか確認するコマンドです。
まずはサクッとこのコマンドで正常にgithubが操作できるか確認しておきましょう。
認証が成功した場合の表示も覚えておくと便利です。
ssh -T git@github.com
# 成功している場合
> Hi %YourName! You've successfully authenticated, but GitHub does not provide shell access.
# 失敗している場合
> git@github.com: Permission denied (publickey).
鍵の作成
まずは、新規に鍵を作って、githubに追加で登録する流れになりますが、
下記コマンドを参考にして鍵を作っておきます。
【手順】
1. 鍵を作る場所に移動
2. 鍵作成コマンド
3. 鍵名称
4. パスワードは入れても入れなくてもいい、初心者の人はそのままEnterしておきましょう。(確認と合わせて2回入力があります)
# 1 鍵を作成する場所に移動(なければ自分のrootディレクトリに.sshフォルダを作成してください)
$ cd ~/.ssh
# 2 鍵作成コマンド
$ ssh-keygen -t rsa
# 3 鍵ファイル名を「github」にしておきます。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yugeta/.ssh/id_rsa): Enter passphrase (empty for no passphrase): github
#4 Enterを2回(または同じパスワードを入力)
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
#5 次のようなメッセージが現れて、鍵が作られます。
Your identification has been saved in test.
Your public key has been saved in test.pub.
The key fingerprint is:
SHA256:L8lJusqXviyzZyS2vMmI6Lyj5KYjYuCozHTsL6skE0Y yugeta@MacBook-Air-de-yugetakouji.local
The key's randomart image is:
+---[RSA 3072]----+
| |
| |
| E |
|. |
|.. S |
|o.. o .+ + |
|*+ = +..= . |
|/Bo==o=. . |
|/X=o@%=. |
+----[SHA256]-----+
これで、「github」と「github.pub」という2つのファイルが作られました。
github.pubは、公開鍵ファイルで、
githubは、秘密鍵ファイルです。
公開鍵の中の文字列を、クリップボードにコピーしておきましょう。
* あとでやってもいいですが、このタイミングでやっておくと効率的です。
* $ cat github.pub とコマンドを打って、表示された文字列をcmd + cです。
Githubサイトに公開鍵を登録
1. githubにログインしたら、画面右上の自分のアイコンをクリックすると、次のようなリストが表示されます。
そこの「setting」を選択します。
2. 次に画面左メニューの「SSH and GPG keys」を選択します。
3. 「SSH keys」の箇所の「New SSH key」ボタンをクリックします。
4. 「Title」に任意の名前(端末名がいいかも)、「Key」に公開鍵の中の文字列を貼り付けましょう。
5. Add SSH keyボタンを押すと、登録完了です。
configファイルの作成
もう一つ重要なポイントがあり、自分の.sshフォルダに鍵を作ったんですが、通常鍵の名称は、「id_rsa」というファイル名で扱われます。
今回は他の鍵を上書きしないように、「github」という名称にしたので、ちゃんとそのファイルを認識させてあげるために、
configファイルというのを作成しておきます。
$ vi ~/.ssh/config
## 以下を登録
Host github.com
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/github
TCPKeepAlive yes
PreferredAuthentications publickey
IdentitiesOnly yes
上記のコマンドを実行して、中身をそのまま貼り付けるだけで、最初にやったgithubの認証コマンドで成功するようになります。
さいごに
鍵とか公開とか秘密とか、何だかややこしいんですが、このへんはgithubを使うお作法のようなものだと思って、詳しい事は分からなくても、今の所大丈夫です。
でも、アルゴリズムの学習など、深くプログラミングを学んでいくと、この辺も自ずと理解できるようになるので、頑張って学習することも、オススメですね。
そして、楽しいgithubライフを送りましょう!
追記
2024-01-27 : Linuxで構築しているWebサービスでGIT管理したかったので、cinfigと鍵の設置を行ったんですが、鍵はそのPCでのアカウント名に依存するので、その都度作り直して、githubに追加登録するのがいいと分かりました。
それから、Ubuntuせセットした時に、www-dataのユーザーディレクトリって、/var/wwwとセットされていて、web管理用に別のユーザー(webというアカウント名)にwww-dataのグループIDをセットしていたんですよ。
そのユーザーのホームディレクトリは、/home/webだったんですが、configに書かれている"IdentityFile ~/.ssh/github"のパスが、www-dataのパスになっていて、認証がなかなか通らなかったので、
そのパス先に、.sshフォルダを作って、そこに鍵ファイルを設置したら無事に認証成功しました。
まあまあな落とし穴だったので、似たような症状で困っている人と、将来自分が忘れた時用にメモとして残しておきます。
0 件のコメント:
コメントを投稿