Windows 10環境。
GitHubのユーザー名などの設定は終わっている。
GitHubのWEBサイトにて新規プロジェクトを作成
プロジェクトのトップページにてローカルのプロジェクトのコマンドラインが書いてあるので手順通りに実行。
今までならこれでいけるハズなのだが....
ちなみに手順は次
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:{ユーザ名}/{プロジェクト名}.git
git push -u origin main
この状態でローカルにてcommit
してpushすると
次のメッセージで失敗する
git@github.com: Permission denied (publickey).
いままでもっとサクっと行った気がしたが内部の難しいところはよくわからない。
セキュリティのレベルが変わったのだろうか?
とにかく難しい話は置いておいて従来の認証方式ではなくssh
認証の手順に変更することで正しくプッシュできる。
要するにこれをやればあなたのPCにある鍵ファイルとGitHub側の鍵ファイルをいい感じの演算を元に照らし合わせることによってアクセスできるよといった感じ。鍵ファイルが漏れなければかなり強固(たぶん)
一度設定してしまえばずっと使える。
次の場所に.sshフォルダを作る。
私の場合すでに存在した。
C:\Users\ユーザ名\.ssh
.ssh
フォルダ内で次のコマンド
ssh-keygen
※こちらはgitをインストールすると一緒に入るコマンドらしい。
あとはエンターを何度か押して全てスキップしてOK。
途中パスワードを聞かれるが不要。公開鍵認証方式の時点でかなり強固なのでパスワードは設定しなくても良い。それでもセキュリティが心配な場合は設定する。
同フォルダ内に次のファイルが増えているはず。
id_rsa
id_rsa_pub
基本的にはLinux
でもWindows
でも同じファイル。
id_rsa_pub
を開いて中身をクリップボードにコピーしておく。
まずはログインして対象のプロジェクトに移動
次のURLにアクセス
https://github.com/settings/keys
New SSH Key
をクリック
適当なタイトルを入れて先程コピーしたid_rsa_pub
の内容をKeyにペースト
メールにてSSHキーが追加された旨のメッセージが送られてくる。
これでSSHの設定は完了
次のコマンドでテストできる
ssh -T git@github.com
成功すれば次のようなメッセージ。
Hi CrypticToilet! You've successfully authenticated, but GitHub does not provide shell access.
※CrypticToilet
は私のアカウント名
鍵の名前をデフォルトから変更していると失敗するらしい。
冒頭で書いたgit init
の手順でpush
する。
余談だがssh
認証でpush
する場合は
git remote add origin git@github.com:{ユーザ名}/{プロジェクト名}.git
のようにgit@github.com
から始まるものを指定する必要がある。https
でいくと恐らく失敗する。
実際のローカルプロジェクトのgitには一切手を加えること無くこれで認証が通った。
Linux
でも基本は同様の手順で行えるので覚えておきたい。
上記の方法でGitHubのリポジトリにpush
した後に別のLinux
環境からcloneしようとするとなぜか弾かれる。
アカウントは同じでssh認証も終わっている。
鍵が別なのがだめなのだろうか。
ともかくこの場合https
の方法でclone
できた。
あくまで余談push
できるかは試していない。