UbuntuとCentOSの下、独自のgitサーバーを構築

リモートリポジトリのGithubを使用し、GitHubの公共事業は無料ですが、あなたが見て他の人をしたくない場合は、あなたのプロジェクトは、充電する必要があります。私たちは、民間の倉庫として、独自のGitサーバーを構築する必要があり、その後、支払う必要はありません。


  • Gitのサーバーは、Ubuntuの下に設定しました

  1. ビューgitのバージョンは、システムのUbuntuと一般的なCentOSのインストールが自動的にインストールされます
 $ git --version  
git version 1.7.1 
  1. そうでない場合、コマンドはsudo apt-getをインストールgitのインストールを使用
 $ sudo apt-get install git
  1. 専用のGitのユーザーを設定し、パスワードを設定し、特別なコード管理とサービス管理gitのために全力
  sudo useradd -m git  
 sudo passwd git(change to yours)  

注:上記のコマンドは、ユーザー名とパスワードは両方のgitアカウントです生成し、また、あなたのパスワードを設定することができ、最初にそこに設定する必要があり、そうでない場合は問題があるだろう後に、(パスワードがない場合は、ノーSSHキーのとき検証できない、あなたはクローンできない)場合にも指定することが長い間このようなクローン、プッシュ、プルなどの他の関連する操作()などのように自分のユーザー名を作成することができ、ユーザー名を例えば全てのgitに(この記事)に、 - mオプションは、家庭で許可されていますユーザーのホームフォルダのディレクトリを生成し、我々のコードレポジトリはメインフォルダ内に配置されます。

  1. そして、ユーザのホームディレクトリに新しいgitリポジトリとしてのgitリポジトリのフォルダを作成し、倉庫のための最も基本的なセキュリティを装備 - アクセス制御
  sudo mkdir /home/git/repositories # 最好使用repositories作为文件夹名称,这样可以简化后面的操作  
sudo chown git:git /home/git/repositories  
sudo chmod 755 /home/git/repositories  
  1. このように、簡単なgitのサーバはすでに場所にある、あなた自身の簡単なテストプロジェクトを作成することができます。次の操作を容易にするために、我々は最初のユーザのgitに切り替え
  su git
  1. respositoriesに空倉庫を初期化し、新しいディレクトリのHelloWorld(倉庫)、およびディレクトリへのスイッチ、
 mkdir helloworld  
cd helloworld 
git --bare init  

次のここで注意された私たちは、倉庫、最高の使用を初期化し、gitの-bareのinit
トラブルを大幅に節約することができ、このコマンドが、使用しないでください:gitの初期化私は別のブログを見て2つのコマンドの違いについて:http://blog.csdn.net/qq_29232943/article/details/60971061

あなたはgitの初期化初期化を使用する場合は、ディレクトリには、リモートリポジトリの作業ツリーを含んでいます。
リモートリポジトリのブランチをプッシュしている場合は、リモートリポジトリへのローカルリポジトリのプッシュは、(その後、ブランチをプッシュしていない場合は、問題がない)場合には、その結果は、リモートリポジトリ上の作業ツリー内の反応、つまりディレクトリをプッシュしないであろう対応するファイルまたは以前の内容の下に。
解決策:サーバーは、コマンドを実行する必要があります:gitのリセットはプッシュの内容を見ることが-hard。

問題2
のGit:プッシュ間違った解決策マスター- >マスター(ブランチが現在されてチェックアウト)

これはデフォルト拒否のGitのプッシュ動作を設定する必要があるためである、サーバは.git / configに以下のコードを追加、変更します:

[receive]
denyCurrentBranch = ignore

[OK]を、良いの空の倉庫の確立には、(そのような開発マシンのウィンドウなど)をインストールし、別の1とgitのマシンのテストは、あなたのIPアドレスを区別するためには、ifconfig -aコマンドを介してサーバーのIPアドレスをgitのを確認しサーバーは、ワイヤレスネットワークがwlan0のinetアドレスであれば、IPサーバは、上記の使用192.168.8.34であると仮定する有線ネットワーク、相互のeth0のIPアドレスを獲得しました

 $ git clone git@192.168.8.34:/home/git/repositories/helloworld
Cloning into 'helloworld'...
The authenticity of host '192.168.8.34 (192.168.8.34)' can't be established.
RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.34' (RSA) to the list of known hosts.
[email protected]'s password:  

説明:ここで注意すべき二つのものがあります:
まず、あなたが最初のクローンGitのコマンドやプッシュ接続のGitHubを使用する場合、警告が表示されます:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

GitはSSH接続を使用し、そして時にキーGitHubのサーバー検証最初のSSH接続ので、これは、あなたが本当に、あなたのSSHキーでサーバー(、アップロードする公開鍵から指紋情報キーのGitHubのGitHubのかどうかを確認する必要がありますされます最初のクローンが検証に成功した後、この情報を確認するには、サーバー、ローカル秘密鍵に、将来は)検証しません、あなたの接続情報をあるknown_hostsファイルを生成します、はい入力し、Enterキーを押します。Gitの意志出力警告は、あなたがGitHubのを追加する必要が伝えることで、このマシンの信頼済みリストへの鍵です。

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

一度だけ表示されます。この警告は、後者の操作は、すべての警告を持っていません。
あなたは本当にあなたがGitHubのRSA鍵の指紋情報をはい一貫した制御を入力することができます前に、GitHubのサーバを装った人々を心配している場合はSSHに関連して与えられています。

第二に、あなたがパスワードを知っている場合は、クローンにパスワードを入力するには、このプロンプトは、もちろん、あなたはクローンにパスワードを入力することができますが、より一般的な方法は、検証を完了するためにSSH公開鍵を使用することです。


開発マシン上でいくつかの基本的な動作テスト:いくつかのファイルを追加し、このプロジェクトのためには、その後、いくつかの入力Gitのユーザーのパスワードに加えて、他のすべての正常、その後、上記のインストールと構成を説明した場合、次にpush、コミット成功しています。

上記のテストでは、長いパスのクローンで発見されていない、それは間違いやすいですか?いくつかのステップは、ユーザーのパスワードはgit(クローン、プッシュ)を入力する必要があり、それは迷惑ではないですが、各追加のメンバーのための開発のリズムに応じて、あなたはgitのユーザーのパスワードが面倒で危険なではありません彼に伝える必要がありますか?
だから、あなたは、プロジェクト名、クローン/プッシュ/プル自動化認証限り、指定した時間のクローンを作成することができ、それがより良い別のユーザーがそんなに違うの倉庫に異なるアクセス許可を与えることが最善であれば!次の設定は、ののgitリポジトリの管理がより簡単に、より便利にしましょう、このすべてを処理することができます!

まず、認証の問題、我々は既にgitのデータ交換や操作を記載しているが、SSHに基づいているので、当然、我々は認証が可能にsshを設定することによって解決されますsshの認証は、それぞれが、秘密鍵、公開鍵のそれぞれに対応する秘密鍵だけの公開鍵に対応する、(サーバへの)公開鍵と秘密鍵(自分の保持)を備え、キーによって管理されています。いくつかの単語は、ここでは省略する。自動で認証を解決する簡単な方法は、そう:それぞれの人がコードリポジトリにアクセスする必要がある、あなたのマシンでssh-keygenのを介してサーバに公開鍵を自分の公開鍵と秘密鍵を生成し、サーバ管理者ユーザーのgitのの.ssh / authorized_keysファイルを変更するには、サーバへのユーザの公開鍵を追加します。

OpenSSHサービスをインストールします。


SSHサーバーをインストールするためのコマンド

sudo apt-get install openssh-server

コマンドでは、SSHサービスが開始されて参照してください。

ps –e|grep ssh

SSHサービスを開始します。
コマンドを入力します。SSHサービスの再起動
サービスのsshdの再起動が認識されていないサービスをsshdは

ssh service 在ubantu叫 ssh  
所以重启ssh  
sudo service ssh restart  

これは、CentOSのSSHDであります

service sshd restart 

サービスを停止するサービスのsshd停止:|:コマンドコマンドサービスは、サービスを開始するために開始SSHD
再起動が入力した後:netstatの-antp | grepのsshdは22ポート(省略可能)かどうかを確認するために開始します。
ブートにSSHサービスを設定するには?
◆次のコマンドを入力します。上へSSHDをchkconfigの。
注:chkconfigをするのsshdオフは、SSHのブートを禁止されている場合。

- フレームワーク/の.sshを作成し、適切なアクセス許可を設定します。許可が自分自身を作るにはあまりにも開いて設定されている場合は意味がありませんSSHで保護され、これは重要です。

$ su - git
$ mkdir .ssh && chmod 700 .ssh 
$ touch .ssh/authorized_keys 
$ chmod 600 .ssh/authorized_keys 

authorized_keysファイルは、SSH公開鍵のあなたの開発者のすべてが含まれている、あなたはアクセス権があなたのGitプロジェクトでの作業にそれらを許可する開くことができます。彼らは、自分のSSHキーのペアとあなたに彼らの公開鍵を作成する必要があります。ユーザーgituserにauthorized_keysファイルに公開鍵をコピーします。

地元のSSHキーに、独自のクライアントを作成します。

まず、存在する場合、そこにある場合の.sshディレクトリを参照してください、そして、そこid_rsaとかどうかを確認し、あなたが既に持っている場合は、このディレクトリにこれら2つのファイルをid_rsa.pubファイルへのユーザのホームディレクトリに、次のステップに直接ジャンプすることができます。ない場合は、シェル(WindowsでのGit Bashのオープンを)開く
のconfigureのgitへのローカルユーザーを設定します

$ git config --global user.name "username"
$ git config --global user.email "[email protected]"
$ ssh-keygen -t rsa -C "[email protected]"  

あなたは、このキーの軍事的目的のために使用されていないため、デフォルト値を使用して、電子メール、独自の電子メールアドレスへのアドレス、その後、すべての方法のラウンドに必要なので、パスワードを設定する必要はありません。
すべてがうまくいけば、ユーザーのホームディレクトリの.sshディレクトリで見つけることができ、2 id_rsaとid_rsa.pubおよびファイルがあり、両方のSSH鍵は秘密鍵のペア、id_rsaと秘密鍵である、id_rsa.pubを漏出することはできません公開鍵である、安全に誰にも伝えることができます。
説明:Viewは、すべての設定項目をgitの

$ git config -l  

Gitのサーバーは、RSA認証を開き
、その後、あなたはあなたのGitサーバー上の情報を確認するために、あなたの公開鍵を追加して行くことができます。まず、必要性には、/ etc / ssh / sshd_config RSA認証サーバ上でオープンしますGitの、すなわち:

sudo vim /etc/ssh/sshd_config
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys

ただ、中のauthorized_keysにあるように、に参加するメンバーがあるでしょう、で生成した公開鍵をコピーして追加追加、クローン再び場合、またはパスワードを入力する必要はありませんプッシュした後:

Zhu@XXX/E/testgit/8.34
$ git clone git@192.168.8.34:/home/git/repositories/helloworld
Cloning into 'helloworld'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

無効にGitのユーザーのログインシェル
セキュリティ上の理由では、第二のステップは、/ etc / passwdファイルを編集することによって行うことができますシェルを、ログインが許可されていないgitのユーザーを作成することです。次のような行を検索します。

sudo vim /etc/passwd
git:x:1001:1001:,,,:/home/git:/bin/bash  

最後に、コロンが読んだ後:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  

我々はgitのgitのシェルユーザーログイン自動的に終了するたびにするために指定されたので、この方法では、gitのユーザーは、通常のsshのgitを通じて使用できますが、ログインシェルはできません。

管理と公共機関
のチームが小さい場合には、サーバの公開鍵を収集/home/git/.ssh/authorized_keysファイルに入れ、誰もが実現可能です。チームは数百人を持っているので、再生することができません場合は、パブリックとGitlab権を管理するために使用することができ、Gitlab同様のGithubに


CentOSの下のgitサーバーをインストールします。


Ubuntuと類似の違い下のコマンドがあること注意
yumをgitのインストール
CentOSの下に更新Gitのバージョンをhttp://www.cnblogs.com/boxuan/articles/6434109.html


以下のリンクのヘルプのおかげ
参考:http://freeloda.blog.51cto.com/2033581/1410562
参考:http://blog.csdn.net/xsl1990/article/details/25486211
参考:HTTP://blog.csdn .NET / wave_1102 /記事/詳細/ 47779401

公開された175元の記事 ウォン称賛76 ビュー23万+

おすすめ

転載: blog.csdn.net/qq_29232943/article/details/56835554