Windows上にGitサーバを構築する | SSH編

社内など、ローカルエリアネットワーク上にある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 公開鍵を作成する

  1. Git Bashを起動し、/c/Users/<ユーザー名>フォルダに移動する(通常、Git Bashを起動するとこのフォルダになります)
  2. /c/Users/<ユーザー名>/.sshフォルダが無い場合は生成する
    mkdir .ssh
    
  3. /c/Users/<ユーザー名>/.sshフォルダに移動する
    cd .ssh
    
  4. 次のコマンドを実行し、SSH 公開鍵を作成する
    ssh-keygen -t rsa -b 4096 -C "<メールアドレス>"
    
    質問は全てエンターでOK
    成功するとid_rsaid_rsa.pubの2ファイルが生成される

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 キーを生成する

  1. Git Bashを管理者として実行するで起動する
  2. /c/Program\ Files/Git/etc/ssh/に移動する
    cd /c/Program\ Files/Git/etc/ssh/
    
  3. 次のコマンドを実行し、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-server-sshd

リポジトリの作成

Git サーバのマシンにリモートリポジトリとなるリポジトリ(ベアリポジトリ)を作成します。

  1. 末尾に.gitと付けた任意のフォルダを作成する
    例) c:\gitrepo\test.git
  2. Git Bashを起動し、作成したフォルダ内で次のコマンドを実行する
    git init --bare --shared
    

クライアントの公開鍵をサーバに登録する

  1. /c/Users/<ユーザー名>/.sshフォルダが無い場合は生成する
  2. /c/Users/<ユーザー名>/.sshフォルダにauthorized_keysという名前のファイルを作成する
  3. 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
Gitサーバとクラインアントが同一マシンでサーバ名がlocalhostの場合は、Permission deniedが出なかったので注意してください。
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

関連コンテンツ

スポンサードリンク

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です