WindowsとGitLab

Windows

はじめに

WindowsからLinuxにインストールしたGitLabにSSHでアクセスするためのメモです。
SSH鍵はパスワードありでLinuxで作成したものをWindowsにコピーして使っています。

構成

- GitLab 17.0.2-ce.0

- Windows11

- Git for Windows 2.45.2
    - git version 2.45.2.windows.1
    - OpenSSH_9.7p1, OpenSSL 3.2.1 30 Jan 2024

GitLabにGit SSHで接続するには

GitLabにGitでSSH経由で接続するには以下の設定が必要です。

 ・~/.bashrcを作成する。
 ・~/.ssh/configを作成する。
 ・ssh-addコマンドで秘密鍵を登録する。

Git for Windowsのインストール

Git for Windows
We bring the awesome Git VCS to Windows












bashrcファイルの作成

SSH キーのパスフレーズを使う - GitHub Docs
SSH キーを使用するたびにパスフレーズを再入力する必要がないように、SSH キーを保護し、認証エージェントを設定できます。

WindowsでGit Bashを起動します。

cd ~/
touch .bashrc

.bashrcの内容は下記です。

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

configファイルの作成

Windowsのホームディレクトリに.sshディレクトリ、その中にconfigファイルを作ります。
WindowsでGit Bashを起動します。

cd ~/
mkdir .ssh
cd .ssh
touch config

以下の内容のconfigファイルを作ります。
IdentityFileには、後ほど作成、またはコピーする公開鍵のパスを記載します。
Git Bashを使う場合は、パスはスラッシュ「/」で区切ります。
Windowsのコマンドプロンプトでgitの操作を行う場合は、バックスラッシュ「\」で区切ります。
両方を記述することも可能です。

Host GitLab
  HostName 192.168.10.5
  User hogehoge
  IdentityFile ~/.ssh/gitlab_ed25519
  IdentityFile C:\Users\hogehoge\.ssh\gitlab_ed25519
  ForwardAgent yes

SSH鍵の作成

既存のSSH鍵を使う場合は、Windowsのエクスプローラーを開いてアドレス欄に「%USERPROFILE%」と入力するとホームディレクトリが表示されます。
.sshディレクトリに移動して、SSH鍵(秘密鍵と公開鍵)をコピーします。
WindowsでSSH鍵を作る場合は以下のコマンドを実行します。
「gitlab_ed25519」は、configファイルに記述した名前と同じにします。
WindowsでGit Bashを起動します。
パスフレーズありで作成します。
セキュリティを下げても良い場合は、パスフレーズなしで作成します。(リターンキー2回)

cd ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/gitlab_ed25519

ssh-addコマンドで秘密鍵を登録する

WindowsでGit Bashを起動します。
パスフレーズを入力して登録します。

ssh-add ~/.ssh/gitlab_ed25519

GitLabにSSH公開鍵を登録する

GitLabにアクセスして左上のユーザーアイコンをクリックしてPreferencesを選択します。
左ペインに表示されたSSH Keysをクリックします。
右上のAdd new keyをクリックします。
Keyの項目に拡張子がpubの公開鍵(gitlab_ed25519.pub)の内容を貼り付けます。
Titleを修正します。
Expiration dateのバツ印をクリックして、空欄にします。
Add keyをクリックして完了です。

SSHで接続できることを確認する

一度、全てのGit Bashを終了してから、再度起動します。
.bashrcが読み込まれて、~/.sshにagent.envファイルが作成されます。

「192.168.10.5」は、configファイルに記述したホスト名です。

ssh -T git@192.168.10.5

以下が出力されれば良いです。
hogehogeは、configファイルに記述したユーザ名です。

Welcome to GitLab, @hogehoge!

gitの操作

以降は、gitの操作です。
WindowsでGit Bashを起動します。
プロジェクトのディレクトリに移動してgitを初期化します。

cd project
git init
git add -A
git commit -m "initial project commit"

GitLabからプロジェクトのSSHのアドレスをコピーし、orioginとして登録します。

git remote add origin git@192.168.10.5:username/project.git

リモートリポジトリのアドレスを確認します。

git remote -v

git pullを実行してローカルリポジトリを更新します。

git pull

git pushできるか確認します。

git push origin main

Comments