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_rsaid_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できるかは試していない。
