KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

GitLab 初期設定 -- SSH priv pub key の作成、.ssh/config とサイトへの各鍵の登録、接続と push の確認

why

まっさらな状態から GitLab の初期設定をする機会があったので、ちょうどいいのでまとめておく

昔書き殴ったメモの記事が酷かったので、わかり易く書き直したくなった

ググって StackOverFlow と GitHub Doc を見てみる

stackoverflow.com

The https protocol requires you to enter your username and password every time. You need to use the ssh protocol. For that, you need to create SSH keys first.

help.github.com

GitHub 公式のこのドキュメントを参照する

ssh-keygen -t ed25519 -C "your_email@example.com"

これで ed25519 というアルゴリズムを使ってメアドに対応する ssh-key を作成できるらしい

freak-da.hatenablog.com

個人的には、パスフレーズは気休め程度にしかならないと思っているので付けていない。 そもそも、SSH秘密鍵パスフレーズは、ネットワーク越しのパスワードとは違うもので (だから違う名前がついているのだが)、ZIPファイルのパスワードと似たようなものだ。 攻撃者がファイルをローカルにコピーしてじっくり解析できる。

ssh-keygen で ed25519 の秘密鍵 公開鍵 を生成

docs.gitlab.com

Algorithm    Public key  Private key
ED25519 (preferred) id_ed25519.pub  id_ed25519
RSA (at least 2048-bit key size)    id_rsa.pub  id_rsa

GitLab 公式で推奨されているように、RSA 方式より強固な ed25519 方式を使う

ssh-keygen -t ed25519 -C "kaede****@gmail.com"
Generating public/private ed25519 key pair.

Enter file in which to save the key (/Users/kaede0902/.ssh/id_ed25519): 
Created directory '/Users/kaede0902/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

Your identification has been saved in /Users/kaede0902/.ssh/id_ed25519.
Your public key has been saved in /Users/kaede0902/.ssh/id_ed25519.pub.

The key fingerprint is:
SHA256:****** kaede0902js@gmail.com

The key's randomart image is:
+--[ED25519 256]--+
|      *****    |
|  *****        |
+----[SHA256]-----+

.ssh/_id_ed22519 に ssh key (priv) が作られた

.ssh/_id_ed22519.pub に pub key も生成。

同時に無くした場合に再発行できる fingerprint?

と randomart image? が発行されるので控えておく。

GitHub/GitLab に pub key を登録

公開鍵をサーバー上に登録する。

qiita.com

f:id:kei_s_lifehack:20210914203910p:plain

GitLab だとここで

f:id:kei_s_lifehack:20210920221552p:plain

GitHub だとここ。

タイトルにはマシン名を登録する

ssh-ed25519
ABCDEFGH
****@example.com

と貼り付ける

メールアドレスも必要。

GitLab への 秘密鍵情報を .ssh/config に書く

docs.gitlab.com

.ssh/ に config という名前のテキストファイルを作成して

今度は

# GitLab https://yourCompany.com

Host YourCompany.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_ed25519

Git のリポジトリサイトを書いて、その URL を書く。コメントアウト

Host に GitLab の URL

推奨認証は公開鍵

識別ファイルに先ほど作った秘密鍵の場所を書く。

RSA より強固な ed25519 を使っているので、鍵名は rsa にならない

ssh -T で GitLab との接続テスト

% ssh -T your.company.com
The authenticity of host 'your.company.com (111.1111.1111.)' can't be established.
ECDSA key fingerprint is SHA256:****.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'your.company.com' '1111.1111.1111' (ECDSA) to the list of known hosts.

これで接続先がリストに登録された。

2回目をやっても 拒否されるが、それは大丈夫

メアドとユーザー名を入力して push

これでクローンしてきてコミットすると

Author identity unknown

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository

と言われるので従う。

するとコミットして push できるようになる。

これで解決。

git branch -D test
Deleted branch test (was abc123).

テストに使ったブランチは、リモートもローカルも消しておきましょう。