GitLab 初期設定 -- SSH priv pub key の作成、.ssh/config とサイトへの各鍵の登録、接続と push の確認
why
まっさらな状態から GitLab の初期設定をする機会があったので、ちょうどいいのでまとめておく
昔書き殴ったメモの記事が酷かったので、わかり易く書き直したくなった
ググって StackOverFlow と GitHub Doc を見てみる
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.
GitHub 公式のこのドキュメントを参照する
ssh-keygen -t ed25519 -C "your_email@example.com"
これで ed25519 というアルゴリズムを使ってメアドに対応する ssh-key を作成できるらしい
個人的には、パスフレーズは気休め程度にしかならないと思っているので付けていない。 そもそも、SSH秘密鍵のパスフレーズは、ネットワーク越しのパスワードとは違うもので (だから違う名前がついているのだが)、ZIPファイルのパスワードと似たようなものだ。 攻撃者がファイルをローカルにコピーしてじっくり解析できる。
ssh-keygen で ed25519 の秘密鍵 公開鍵 を生成
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 を登録
公開鍵をサーバー上に登録する。
GitLab だとここで
GitHub だとここ。
タイトルにはマシン名を登録する
ssh-ed25519 ABCDEFGH ****@example.com
と貼り付ける
メールアドレスも必要。
GitLab への 秘密鍵情報を .ssh/config に書く
.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).
テストに使ったブランチは、リモートもローカルも消しておきましょう。