WindowsのGitサーバ(リモートリポジトリ)構築メモ
- Mon
- 00:31
- Windows
Windows7にリモートリポジトリ用のGitサーバを構築したのでそのメモ。
利用したのは、Gitの公式ツールGit for Windows
手順としては、
1. Git for Windowsのインストール
2. sshd用アカウントの作成
3. sshdの起動
4. git daemonの起動
5. リモートリポジトリの作成
改行コートの指定などは各環境に合わせて適当に。
公式Gitツールのsshdとの違いは下記の通り。
Git公式のsshdはsshdアカウントが必要なのでコンパネから標準ユーザで作成。
コントロール パネル\ユーザー アカウント\アカウントの管理\新しいアカウントの作成
例えば、C:\Program Files\Git\etc\ssh とか。
コピー後、MINGW64を立ち上げ(エクスプローラの適当なフォルダを右クリップでGit Bash Hereを選択)フルパスで起動。

sshdの起動はフルパスでないと怒られるのでフルパスで起動。



複数のGitクライアントとのやり取りは下記に続く
これでサーバ(リモートリポジトリ)側の準備ができたので早速clientから。
クライアント側は、秘密鍵でもWindowsのパスワードでもどちらでもOK。秘密鍵を使う場合は、
$ ssh-keygen.exe -t rsa
で作成する。キーは$HOMEの.sshに保存(C:\Users\user01\.ssh 等)。面倒なので今回は、Windowsのパスワードを利用。
環境は、


利用したのは、Gitの公式ツールGit for Windows
手順としては、
1. Git for Windowsのインストール
2. sshd用アカウントの作成
3. sshdの起動
4. git daemonの起動
5. リモートリポジトリの作成
1. Git for Windowsのインストール
Git for WindowsをDLして、インストール。特に困ることはないと思うのでそのままインストール。改行コートの指定などは各環境に合わせて適当に。
2. sshd用アカウントの作成
Windows用のsshdは、Microsoftの公式OpenSSHのライブラリの中にもありますが、微妙にパス解決のやり方が違うのかそのままだとリポジトリがない的なエラーが出ます。ということで、Git公式ツールの中にもssh関連のライブラリが同梱されているのでそのsshdを利用。公式Gitツールのsshdとの違いは下記の通り。
内容 | Git公式 | MS公式 |
sshdアカウント | 必要 | 不要 |
起動シェル | MINGW64 | 標準コマンドライン |
起動方法 | フルパス指定 | 管理者権限で(psexecが便利) |
Git公式のsshdはsshdアカウントが必要なのでコンパネから標準ユーザで作成。
コントロール パネル\ユーザー アカウント\アカウントの管理\新しいアカウントの作成
3. sshdの起動
まず、sshd用に各種hostキーを作成。$ ssh-keygen.exe -t rsa -f ssh_host_rsa_key $ ssh-keygen.exe -t dsa -f ssh_host_dsa_key $ ssh-keygen.exe -t ecdsa -f ssh_host_ecdsa_key $ ssh-keygen.exe -t ed25519 -f ssh_host_ed25519_keyで、作成したキーはGitをインストールした/etc/sshに保存する。
例えば、C:\Program Files\Git\etc\ssh とか。
コピー後、MINGW64を立ち上げ(エクスプローラの適当なフォルダを右クリップでGit Bash Hereを選択)フルパスで起動。

sshdの起動はフルパスでないと怒られるのでフルパスで起動。
user01@PC01 MINGW64 / $ /usr/bin/sshd.exeタスクマネージャで確認。

4. git daemonの起動
同じく、MINGW64からgitコマンドで起動user01@PC01 MINGW64 /c/a_git_repo $ git daemon --verbose --reuseaddr --export-all --enable=receive-pack --enable=upload-pack --base-path=/c/a_git_repo [7736] Ready to rumble

5. リモートリポジトリの作成
下記の様なスクリプトを作成しておくと便利。#!/bin/sh REPO=test01.git rm -fr $REPO mkdir $REPO touch $REPO/git-daemon-export-ok cd $REPO git init --bare --share

複数のGitクライアントとのやり取りは下記に続く
これでサーバ(リモートリポジトリ)側の準備ができたので早速clientから。
クライアント側は、秘密鍵でもWindowsのパスワードでもどちらでもOK。秘密鍵を使う場合は、
$ ssh-keygen.exe -t rsa
で作成する。キーは$HOMEの.sshに保存(C:\Users\user01\.ssh 等)。面倒なので今回は、Windowsのパスワードを利用。
環境は、
Windows7 | 10.110.0.2 | Gitリモートリポジトリ、sshd |
Macbook Pro | 10.110.0.3 | Gitクライアント |
A. git clone
同じWindows7上で実施。user01@PC01 MINGW64 /c/a_git $ git clone ssh://localhost/c/a_git_repo/test01.git Cloning into 'test01'... user01@localhost's password: warning: You appear to have cloned an empty repository. Checking connectivity... done.

B. テキストファイルをadd/commit/push
これも、同じWindows7上で実施。user01@PC01 MINGW64 /c/a_git $ cd test01/ user01@PC01 MINGW64 /c/a_git/test01 (master) $ git branch user01@PC01 MINGW64 /c/a_git/test01 (master) $ echo "add text file" > test.txt user01@PC01 MINGW64 /c/a_git/test01 (master) $ git add test.txt user01@PC01 MINGW64 /c/a_git/test01 (master) $ git commit -a [master (root-commit) 5c7bdcf] add text file 1 file changed, 1 insertion(+) create mode 100644 test.txt user01@PC01 MINGW64 /c/a_git/test01 (master) $ git push user01@localhost's password: Counting objects: 3, done. Writing objects: 100% (3/3), 227 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://localhost/c/a_git_repo/test01.git * [new branch] master -> master
C. Macbook proからclone/modify/push
WindowsのIP直指定で。また、Macのアカウントはuser02なので、URLにuser01@を指定してuser01で取得する。
D. Windowsからpullして確認
test.txtに、"modify from Macbook"が追加されている。OK。
- 関連記事
-
- Windows10でbash(Ubuntu)
- Windows10インストール
- Windows7ログイン画面のユーザ選択で非表示にする
- WindowsのGitサーバ(リモートリポジトリ)構築メモ
- Windows PowerShellによるファイル・フォルダ権限の一括変換
Comment
Trackback
- URL
- https://nosource.blog.fc2.com/tb.php/142-e64015c9
- この記事にトラックバック(FC2Blog User)