うまくいかない・・・
(*´ω`)アーよくある・・・
ということで、トライあんどエラーにより真実を解き明かしたい・・・
そんな取り組みです。
やった環境とか
私はWIN11でやりました。
以下でMyPCは、「私のWIN11のPC」です。
IDE1にVS Codeを使っているのでそれで、git接続試しています。
やる事
GITLABとMyPC間でSSHキーでやり取りしたい!って時には、大体以下をやらないといけないという流れ的に所の説明です。
- SSHキーを作る(‘ω’)まーそーでしょーね。イルヨキット
- GITLABに作ったSSHキーの公開鍵の方を登録する。(‘ω’)ダローね。しないとダメダヨキット
- MyPCにSSHキー秘密鍵を配置。(‘ω’)どこでもいいみたいだな・・・
- .sshにcofigの設定する。(‘ω’)本ブログのメインテーマになりますね!
と言った感じです・・・
(´・ω・)一見チョロそうに見えますね・・・
そう・・・でも・・・うまくいかない・・・そう言った・・・感じですね・・・
SSHキーの作成
ここは・・・飛ばそうかと・・・LINUX系マシンでの紹介ブログが多いみたいですね。
Windowsでやる場合は、Tera Termとか、Puttyとかそんなんで作ってもらえたらいいのかなと・・・
以降の説明では、秘密鍵:gitlab_id_rsa、公開鍵:gitlab_id_rsa.pubで行きます。
GITLABにSSH公開鍵を登録する。
ここも・・・大体わかっている人多いと思うので・・・
1.GITLABにログインする。
2.以下のところをクリック
3.以下の設定をクリック
(‘ω’)この辺はマウスあったらできるね!
4.以下、「SSHキー」をクリック
(‘ω’)おー近づいてきたね・・・
5.「新しいキーを追加」をクリック
6.あとは以下の画面でSSH公開キーをペタっと張り付けましょう!終わったら「キーを追加」ボタンを押したらいい。
(´・ω・)オー簡単じゃん・・・
まーちょっと雑に説明したので・・・細かいところは調べて頂けたらと。。。
(´_ゝ`)おっ適当だな・・・
MyPCにSSHキー秘密鍵を配置
これは・・・どこでもいいんだよね・・・。好きなところに置いたら良いかと・・・
ただ・・・以下に置いとくのが一般的なんでしょうか・・・
C:\Users\自分のユーザー名\.ssh
C:\って書きましたけど・・・ここは、皆さんのWindowsがインストールされているドライブにしてもらえたらと・・・
配置するのは秘密鍵の方ですよ。ユーザー名が「kotaro」さんの場合は以下の感じです。
C:\Users\kotaro\.ssh\gitlab_id_rsa
もしかしたら、後でファイル権限で怒られるかもしれないので、一応以下をやっておいたら良いかもって思います。(上手くいかなかったらやってみると良いかと・・・)
ファイル選んで右クリック→「プロパティ」をクリック。
「詳細設定」をクリック、「セキュリティ」タブを選択。
「詳細設定」をクリック。
「継承の無効化」をクリック。
以下のメッセージがでますが・・・
「継承されたアクセス許可をこのオブジェクトの明示的なアクセス許可に変換します。」
「セキュリティ」タブに戻るんで、「編集」をクリック。
「SYSTEM」、「Administrators」を選んで「削除」クリック
で自分のアカウント以外は消しましょう!
って説明しましたけど・・・これはやらんでもいいかもしれないです!
(‘ω’)ノじゃ、説明すんなよ!
.sshにcofigの設定
遂に本題ですね。まずは、configの書式は以下です。
Host ホストの名前
User ユーザー名
Hostname ホスト名
IdentityFile SSH秘密鍵の場所
IdentitiesOnly yes
ユーザー名が「kotaro」さんの場合で以下のような感じ・・・
Host kotaro
User git
Hostname gitlab.com
IdentityFile C:\Users\kotaro\.ssh\gitlab_id_rsa
IdentitiesOnly yes
これをメモ帳などお好きなエディタで編集するっと・・・
でできたら、以下に格納する。
C:\Users\自分のユーザー名\.ssh\config
でおしまいです。
でうまく行くかどうかを確認するのは以下のコマンドで確認です。
ここは、WindowsのPowerShellとかでも良いかと思います。
ssh -T ホストの名前
「ホストの名前」に指定することでconfigの「Host」に該当する情報を使う・・・ってイメージですね。「kotaro」さんの場合
ssh -T kotaro ---> Host kotaro
User git
Hostname gitlab.com
IdentityFile C:\Users\kotaro\.ssh\gitlab_id_rsa
IdentitiesOnly yes
こういうイメージです。
上手くいくと以下の感じになります。
Welcome to GitLab, @kotaro!
さて・・・これは上手くいったの書いているので・・・それは上手くいくじゃん!ってなりますね。
(?_?)じゃ、git cloneは上手くいくの?
って部分ですけど・・・この設定だと失敗すると思います。
SSHでのgit cloneを説明するために、仮に「CLONE/TEST」というプロジェクトがあるとします。
TESTプロジェクトのSSHのcloneするURLは(GITのWEB画面の以下でとれる奴)
git@gitlab.com:clone/test.git
であったとします。
git clone git@gitlab.com:clone/test.git
でやると失敗します。
Cloning into 'test'...
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
(;´Д`)あぁぁ・・・ザムネン・・
なんですけど・・・これはconfigの設定と関係してきます。
上記のcloneのURLを以下にすると上手くいきます。
git@kotaro:clone/test.git
Cloning into 'test'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
git cloneのときの以下の赤字部分がどのconfigを使うのか?を指しているわけです。
git clone git@kotaro:clone/test.git
また、「git@」の部分はconfigのUserに該当します。
なので、gitlab.com->kotaroにするとconfigに紐づいてSSHの秘密鍵の場所も関連づいて、上手く行く
という感じです。
では、Web画面からとってこれる「git@gitlab.com:clone/test.git」でうまくできりるようにするには?
もうわかって来たかと思いますが、configを以下に用にしたら良いってことですね。
Host gitlab.com
User git
Hostname gitlab.com
IdentityFile C:\Users\kotaro\.ssh\gitlab_id_rsa
IdentitiesOnly yes
こうしておけば、Web画面からとってこれる「git@gitlab.com:clone/test.git」の時、上手くSSH秘密鍵の場所がもってこられて、上手く承認できちゃう!ってことかと思います。
(´_ゝ`)ほほぅ・・・全体的に「ら」抜きで攻めてるわけですね・・・
- IDE:ソースコードなんかを編集したり、コンパイルしたりなんかが、統合的にできるエディターとでも思ってもらえたら良いかなと!雑に言えば、Windowsに標準でついてメモ帳なんかと一緒ですね!それのすごい奴!ってそんな風に考えて下さい! ↩︎
コメント