WindowsにGitサーバを構築する方法|SSH編
社内など、ローカルエリアネットワーク上にあるWindowsマシン上にGitのリモートサーバを構築することで、複数人でのソースコード管理やバージョン管理が容易になります。この記事では、Windows上にGitサーバを構築する手順を解説します。
前提条件
- Gitサーバ - Windows10
- クライアント - Windows10
- Gitサーバ、クライアント共にGitはインストール済み
バージョン
- Git - 2.32.0.windows.2
Gitサーバのプロトコルには次の4つを使用できます。
- Local プロトコル
- SSH プロトコル
- Git プロトコル
- HTTP プロトコル
Local プロトコルは本サイトの記事でもよく使っていたディスク上のパスを指定するものです。
本記事はSSH プロトコルの構築手順になります。
参考
クライアント
設定
最低限、次の項目を設定しておきます。
git config --global user.email "<メールアドレス>"
git config --global user.name "<ユーザ名>"
SSH 公開鍵を作成する
- Git Bashを起動し、/c/Users/<ユーザー名>ディレクトリに移動する(通常、Git Bashを起動するとこのディレクトリになります)
- /c/Users/<ユーザー名>/.sshディレクトリが無い場合は生成する
mkdir .ssh
- /c/Users/<ユーザー名>/.sshディレクトリに移動する
cd .ssh
- 次のコマンドを実行し、SSH 公開鍵を作成する
質問は全てエンターでOKssh-keygen -t rsa -b 4096 -C "<メールアドレス>"
成功すると次の2ファイルが生成される- id_rsa
- id_rsa.pub
Git サーバ
GitをC:\Program Files\Gitにインストールしている前提で記載しています。別の場所にインストールしている場合は該当箇所を読み替えてください。
前提条件として、Gitサーバの管理者とするユーザでWindows10にログインします。
設定
サーバ側も最低限、次の項目を設定しておきます。管理者のものなどを設定しましょう。
git config --global user.email "<メールアドレス>"
git config --global user.name "<ユーザ名>"
次のPATHが通っていることを確認します。PATHが無い場合は追加してください。
C:\Program Files\Git\cmd
SSH キーを生成する
- Git Bashを管理者として実行するで起動する
- /c/Program\ Files/Git/etc/ssh/に移動する
cd /c/Program\ Files/Git/etc/ssh/
- 次のコマンドを実行し、SSH キーを作成する
質問は全てエンターでOK
ssh-keygen -t rsa -f ssh_host_rsa_key ssh-keygen -t ecdsa -f ssh_host_ecdsa_key ssh-keygen -t ed25519 -f ssh_host_ed25519_key
Git Bashを管理者として実行していない場合、ここで"permissionエラー"が出ます
SSHサーバを起動する
PowerShell(またはコマンドプロンプト)を管理者として実行するで起動し、次のコマンドを実行してください。
C:\Program Files\Git\usr\bin\sshd.exe
ファイアウォールの設定を聞かれたら「アクセスを許可する」にします。
実行後、タスクマネージャーにsshdが存在することを確認してください。
リポジトリの作成
Git サーバのマシンにリモートリポジトリとなるリポジトリ(ベアリポジトリ)を作成します。
- 末尾に.gitと付けた任意のディレクトリを作成する
例) c:\gitrepo\test.git - Git Bashを起動し、作成したディレクトリ内で次のコマンドを実行する
git init --bare --shared
クライアントの公開鍵をサーバに登録する
- /c/Users/<ユーザー名>/.sshディレクトリが無い場合は生成する
- /c/Users/<ユーザー名>/.sshディレクトリにauthorized_keysという名前のファイルを作成する
- authorized_keysにクライアントのid_rsa.pubの内容をコピーする
/c/Users/<ユーザー名>にid_rsa.pubを置いた場合、Git Bashから次のコマンドでコピー可能
cat id_rsa.pub >> ./.ssh/authorized_keys
git clone
クライアントでGitサーバのリポジトリをクローンする手順です。操作は全てGi Bash上で行います。
まず、クライアントで以下を実行しておきます。
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
次のコマンドを実行すると、リポジトリをクローンできます。ユーザ名はGitサーバのユーザ名です。
git clone ssh://<ユーザ名>@<サーバ名><リポジトリのパス>
# 例
git clone ssh://git@git-server/c/gitrepo/test.git
ここで、ユーザ名がサーバマシンのローカルユーザの場合、パスワード入力で
Permission denied, please try again.
となることがあります。その場合は次のようにすればクローンできました。
git clone ssh://<サーバ名>+<ユーザ名>@<サーバ名><リポジトリのパス>
# 例
git clone ssh://git-server+git@git-server/c/gitrepo/test.git
localhost
の場合は、Permission deniedが出なかったので注意してください。