WindowsのGitサーバ(リモートリポジトリ)構築メモ

Windows7にリモートリポジトリ用のGitサーバを構築したのでそのメモ。
利用したのは、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。


関連記事

Comment

(編集・削除用)
管理者にだけ表示を許可

Trackback

URL
https://nosource.blog.fc2.com/tb.php/142-e64015c9
この記事にトラックバック(FC2Blog User)

カテゴリ

Amazon

アクセスランキング

[ジャンルランキング]
コンピュータ
249位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
38位
アクセスランキングを見る>>

RSSリンクの表示

ブロとも申請フォーム

Copyright © nopgm