ここでは下記のような環境を想定しています
- サーバー側・・・リモートリポジトリがあるLinux(CentOS)
- ローカル側・・・ユーザー使用PC、Windows側
※両方ともGitインストール済み
Gitoliteをインストールスする前に
ローカル側(Windows側)で公開鍵と暗号鍵を作成する
リモート側(サーバー側)でgitoliteを開始するときに公開鍵が必要なのでまず鍵を作成する
Git Bashで下記のコマンドを実行
ssh-keygen -t rsa -f (ファイル名)
-t 鍵作成アルゴリズム(RSA形式)
-f 鍵ファイル名
※最終的に「~/.ssh」に鍵を置くので「~./ssh」で上記コマンドを実行した方が良い
パスフレーズは設定しなくても良いのでEnter2回
秘密鍵:(ファイル名)
公開鍵:(ファイル名).pub
が作成される
Gitoliteをリモート側(サーバー側)にインストールする
概要
簡単にまとめると下記の手順でインストール&開始する
- gitoliteをサーバーにインストールする(このときgitoliteユーザーが作成される)
- gitoliteユーザーでサーバーにログイン
- gitoliteをセットアップ(開始)する(初期ユーザーのSSH公開鍵○○○.pub必要)
※gitoliteユーザーをサーバーで新規作成して、そのユーザーでgitoliteのリポジトリをcloneしてインストールする方法は何故か上手く行かない(鍵の追加が上手く行かない)
~/.ssh/authorized_keys に上手く鍵情報が追加されない。
おそらくhome/gitoliteにインストールしてしまったため?
詳細
gitoliteをインストールする
インストール権限があるユーザーでサーバーにログイン
下記コマンドでインストール
sudo yum install gitolite
インストール後にサーバーにgitoliteユーザーが作成される
gitoliteユーザーのパスワード設定
下記コマンドを実行
passwd gitolite
パスワード入力してEnter
gitoliteユーザーでログイン
下記コマンドでログイン
su - gitolite
gitoliteをセットアップ(開始する)
- ローカル側(Windows)から公開鍵をサーバー側へ渡す
windows側のgit bashで下記コマンドを実行
scp (鍵ファイル名).pub gitolite@(ipアドレス):tmp
サーバー側の「/temp/」に鍵がコピーされる
- gitoliteをセットアップ
下記コマンドを実行
gl-setup /tmp/(鍵名).pub
- 適当にエンター押す
- .gitolite.rcの編集画面になるが設定しないので終了「:q」
※以上でgitoliteのインストール&セットアップ(開始)が終了
gitからSSHでのサーバーへの接続
SSHの設定ファイルを作成してSSH接続
~/.ssh/で下記のconofigファイルを作成
host gitserver
user gitolite
hostname 192.168.1.8(Gitサーバのホスト名 or IP)
port 22
identityfile ~/.ssh/admin(秘密鍵のPATH)
これで「ssh://gitserver/(リポジトリ名)/」というURIでリモートリポジトリ(サバー側のリポジトリ)にアクセスできる
ちなみにconfigファイルはlinuxはパーミッション600にしないと動かない
接続確認
初期で「testing」「gitolite-admin」というリポジトリが作成されている。
下記コマンドでリポジトリをコピーできるか確認
git clone ssh://gitserver/testing
ファイルがダウンロードできたらSSH接続成功
Tortoise Gitでの公開鍵SSH接続の設定
ssh-keygenで生成した暗号鍵だとTortoiseGitではそのままの設定だとSSH接続ができないので、SSH接続クライアントをTortoiseGitのクライアント(PLink) → Gitのクライアント(ssh)に変更
Tortoise Gitの「Settings > Network」の「SSH > SSH client:」の欄を下記PATHに変更(自分のWindows環境だと)する
C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
↓
C:\Program Files\Git\usr\bin\ssh.exe
gitoliteに登録する公開鍵が以下の形式だったとき
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20130218"
AAAAB3NzaC1yc2E..............
..................
..................
---- END SSH2 PUBLIC KEY ----
上記の形式の場合gitoliteに公開鍵を登録しても、暗号鍵でリポジトリにアクセスできない(鍵登録失敗する)
puttygenの「SSH-2 RSA」形式で公開鍵と暗号鍵を生成したとき上記の公開鍵の形式になる。
Git Bashなどで以下のコマンドを実行して鍵を変換する。
ssh-keygen -i -f (変換前のパス) > (変換後の鍵のパス)
-i 公開鍵や秘密鍵をOpenSSHで利用できるように変換し、その結果を標準出力
-f 鍵ファイルの指定
変換後の公開鍵をgitoliteに登録すると、対応する暗号鍵でアクセスできる(暗号鍵は変換しなくてよい)
ちなみにputtygenで生成した「SSH-2 RSA」形式の鍵は、Plink(SSH接続クライアント、Tortoise Gitの初期設定クライアント)でリポジトリにアクセスできる
testingのリポジトリにアクセスするときは以下のアドレスになる
ssh://gitolite@(接続先のIPアドレスなど)/testing
gitoliteの使い方(リポジトリ別やブランチ別の権限の設定の仕方)
下記参考リンクを参照
参考リンク
- 【Linux】 CentOSにGitolite を導入する
- Git管理の神ツール「Gitolite」なら、ここまでできる!
- [gitoliteはどうやってユーザを判別しているか]
(http://qiita.com/yuku_t/items/46d1d834fbdae271d66c)