Gitサーバの構築

4611 ワード

コメント:
本文は廖雪峰先生のブログGitチュートリアルを参考にします.そのブログに基づいて学習と記録を行い、無私な共有に感謝し、原文を参照することを歓迎します.
インテリジェントポイント
  • apt-get install gitgitをインストールし、ユーザーadduser username
  • を作成
  • 新規ユーザホームディレクトリ下.shh/authorized_keysGitリモートウェアハウスに接続されたユーザを管理する秘密鍵を格納する.
  • git init --bare reponame.git空のリモート・ウェアハウスを作成し、このリモート・ウェアハウスが存在するディレクトリおよびサブディレクトリの所有者を新規ユーザーに設定しますchown -R username:usernameGroup sample.git/
  • 修正/etc/passwdファイル、ユーザーshell端末ログインを無効にします.

  • Gitサーバの構築
    Gitリモートウェアハウスは本質的にローカルウェアハウスと何の違いもありませんが、永続的なオンラインサービスを提供しています.UbuntuにGitサーバを構築する方法を以下に示します.
  • インストールgit:
  • $ sudo apt-get install git
  • gitサービスを実行するgitユーザを作成
  • $ sudo adduser git

    使用passwd gitgitユーザーのパスワードを変更します.
  • 証明書登録の作成
  • 証明書登録を作成するには、githubまたはgiteeを使用する場合、公開鍵をリモートサーバにアップロードするのと同様に、Gitサーバは、登録する必要があるユーザ側の公開鍵(ユーザが作成したid_rsa.pub)を収集する必要がある.
    登録が必要なすべてのユーザの公開鍵、すなわちユーザのid_rsa.pubファイルを収集する.公開鍵を/home/git/.ssh/authorized_keysファイルにインポートし、1行1つ.
    デフォルトで新しく作成されたgitユーザーホームディレクトリは、.ssh非表示ディレクトリがありません.ディレクトリとファイルを手動で作成できます.
    ホームディレクトリの下にデフォルトで生成されたファイルは、/etc/skelディレクトリの内容によって決定されます(自己検証可能).
    同時にUbuntuの下でユーザーを新設し、ホームディレクトリの下の などのディレクトリは新しいユーザーを使用してubuntuデスクトップにログインしてから、デスクトップ、画像、ドキュメント、ダウンロード、音楽などのディレクトリを生成する必要があります.
  • 初期化Git倉庫:
  • Git倉庫としてディレクトリを選択し、/srv/sample.gitと仮定し、/srcディレクトリの下にコマンドを入力
    $ sudo git init --bare sample.git
    [sudo] git    :
          Git     /srv/sample.git/

    Gitは空の倉庫を作成し、ワークスペースがなく、共有にのみ使用されるため、ユーザーが直接サーバにログインしてワークスペースを変更することはできません.
    サーバGitウェアハウスは通常.gitで終了します.
  • ディレクトリの所有者をgitに変更します.
  • $ sudo chown -R git:git sample.git/
  • gitユーザー無効shellログイン
  • セキュリティ上の考慮により、新規のgitユーザはshellにログインすることを許可しない./etc/passwdファイル設定を編集します.passwdファイルを開くと、次のように見つかります.
    git:x:1001:1002:,,,:/home/git:/bin/bash

    に変更
    git:x:1001:1002:,,,:/home/git:/usr/bin/git-shell

    gitでのログインは許可されません
    $ su git
      :
    fatal: Interactive git shell is not enabled.
    hint: ~/git-shell-commands should exist and have read and execute access.
    suコマンドはログインユーザを切り替えるsudoroot管理者権限の取得、コマンドの実行su [username]指定したユーザに切り替え、環境変数を変更しないsu - [username] 環境変数を指定ユーザに切り替えて変更(共通)
    gitユーザーは、sshでgitを正常に使用できますが、shellにログインできません.gitユーザーに指定されたgit-shellは、ログインするたびに自動的に終了するためです.
  • リモートウェアハウスをクローンします.

  • リモート・ウェアハウスgit clone/srv/sample.git/でクローン化できます.
    クローン・リモート・ウェアハウスにアクセスするサーバ名を設定できます.のようにgitseverはローカルhostsに設定され、ipはGitサーバのアドレスである.
    $ git clone git@gitsever:/srv/sample.git
    Cloning into 'sample'...
    The authenticity of host 'gitsever (192.168.104.237)' can't be established.
    ECDSA key fingerprint is SHA256:SYG7vL********************y597FA.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'gitsever,192.168.104.237' (ECDSA) to the list of known hosts.
    warning: You appear to have cloned an empty repository.

    空のgitウェアハウスをクローンし、ウェアハウスの内容を表示するよう求められます.
    $ cd sample/
    
    /sample (master)$ ls -al
    total 4
    drwxr-xr-x 1 win7hostsver 197121 0 May  4 14:29 .
    drwxr-xr-x 1 win7hostsver 197121 0 May  4 14:29 ..
    drwxr-xr-x 1 win7hostsver 197121 0 May  4 14:29 .git

    その後、このリモートライブラリを使用してgitの操作、同期などを行うことができます.
    公開鍵の管理
    以上のように、簡単なgitサーバの構築が完了しました.その後、他の倉庫、他のユーザーの公開鍵などを追加して管理することができます.
  • 公開鍵パス位置:/home/git/.ssh/authorized_keys
  • ただし、大規模または複数の人が使用および管理するgitサーバでは、Gitosisを使用して公開鍵を管理することができる.
    gitサーバウェアハウスの権限管理
    git自体は管理linuxコードのために開発されているため、オープンソース精神を重視し、権限制御をサポートしていない.
    しかし、Gitは関連するフックを提供し、これによって一連のスクリプトを作成して倉庫への提出などの操作を制御し、制御権限を実現することができる.Gitoliteは、管理権限を提供するツールです.