UbuntuでGitサーバーを構築する方法を教えてください

この記事を読むのに約5分かかります。

最近、いくつかのスクリプトを書いていましたが、継続性を保つために、家で追いつくのに時間がかかったので、コード同期の問題が発生しました。そのとき、次の3つの方法を考えました。

すぐに使用できるクラウドディスクを使用しますが、クラウドディスクには他にもいくつかのものが格納されているため、常にリアルタイムで同期することは適切ではありません。
従来のコードホスティングツールであるSVNを使用して使用されています。
最新の分散コードホスティングツールであるGitを使用すると、非常に強力であると言われています。

最終的に、主に最新のテクノロジーを学ぶためにGitを使用することにしました。以下は、メモを取るだけでなく、他の学生をガイドするための手順です。

最初に環境についてお話ししましょう。

サーバー:Ubuntu 16.04 x64
クライアント:Windows7 x64

サーバー構成

最初に次のコマンドを使用して、操作のためにルート権限に切り替えます。

sudo bash

パスワードの入力を求められたら、rootパスワードを入力するだけです。

ログインが成功したら、gitのインストールを開始します。コマンド:

apt-get install git

続行するかどうかを確認するメッセージが表示されたら、yと入力し、Enterキーを押して、インストールが完了するまでインストールプロセスを続行します。

次に、sshのインストールを開始します。コマンド:

apt-get install openssh-server openssh-client

続行するかどうかを尋ねられたら、yと入力してEnterキーを押すと、インストールが自動的に完了します。

次に、専用のgitユーザーを作成します。ユーザー名はgitとも呼ばれ、次のコマンドを実行します。

adduser git

作成が完了すると、ユーザーパスワードを設定するように求められます。覚えて続行できるパスワードを設定してください。その後の詳細情報は、必要に応じて入力できます。

新しいgitウェアハウスの作成を始めましょう。/srvの下にあるウェアハウスストレージディレクトリを選択し、ウェアハウス名はmyfiles.gitであるため、次のコマンドを実行します。

git init --bare /srv/myfiles.git

現在のユーザーはrootであるため、専用のgitアカウントでウェアハウスディレクトリを操作できるようにするには、ウェアハウスディレクトリにgitを許可する必要があります。コマンドは次のとおりです。

chown -R git:git /srv/myfiles.git/

クライアント操作

まず、Windowsバージョンのgitをダウンロードする必要があります。ダウンロードアドレス:https://git-scm.com/download/win

ダウンロードが完了したら、[インストール]をクリックし、インストールが完了するまでプロンプトに従って[次へ]をクリックします。

クライアント上に作業ディレクトリを作成します。たとえば、私のものはgitdirです。作業ディレクトリを右クリックして、[GitBashHere]をクリックします。

ポップアップコマンドの後、ウェアハウスをローカルにクローンします。

$ git clone [email protected]:/srv/myfiles.git
Cloning into 'myfiles'...
The authenticity of host '192.168.252.128 (192.168.252.128)' can't be established.
ECDSA key fingerprint is SHA256:zqtjAg+FGfWrT3SCp1Qa2KqhE2UOy3PmudhhrTFlm7A.
Are you sure you want to continueconnecting(yes/no)? yes
Warning: Permanently added '192.168.252.128'(ECDSA) to the list of known hosts.
[email protected]'s password:
warning: You appear to have cloned an empty repository.

「192.168.252.128」を独自のサーバーIPに置き換え、確認時に「yes」を入力し、最後にgitユーザーを作成したときにパスワードを入力してください。

クライアントが後続の送信操作を実行するためには、現在のマシンのユーザー情報も示す必要があります。コマンドは次のとおりです。

git config --global user.email "[email protected]"git config --global user.name "Your Name"

登録後、この登録情報はコミット時にオペレーター情報を記録するために使用され、その後、 git logを使用すると、対応する情報を確認できます。効果は次のとおりです。

$ git log
commit ae72bcc89ea8f5d9d3a44f0e00cf35e91a1afce8(HEAD -> master, origin/master)
Author: sylan215 <[email protected]>
Date:   Wed Oct 1818:37:412017+0800テスト提出

この時点で、構成プロセス全体が完了しました。

ファイルの変更とGitサーバーへの同期

設定が完了したら、実際の使用リンクを入力します。

まず、いくつかのファイルを変更してmyfilesディレクトリにコピーしてから、サーバーに送信し、myfilesでsubmitコマンドを実行します。

git add .
git commit -am "テスト提出"git push

出力付きのコマンドラインコンテンツ:

$ git add .
$ git commit -am "テスト提出"[master(root-commit) ae72bcc] テスト提出 1 file changed,1insertion(+)
create mode 100644 test.txt
$ git push
[email protected]'s password:
Counting objects:3, done.
Writing objects:100%(3/3),223 bytes |223.00 KiB/s, done.
Total 3(delta 0), reused 0(delta 0)
To 192.168.252.128:/srv/myfiles.git
*[ newbranch]      master -> master

パスワードの入力を求められる場所は、入力したgitアカウントのパスワードです。

注:git操作の詳細なコマンドについては、http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.htmlを参照してください。

送信が成功したら、別のマシンでコマンド git pullを使用して、最新のコンテンツを同期します。

$ git pull
[email protected]'s password:
remote: Counting objects:3, done.
remote: Total 3(delta 0), reused 0(delta 0)
Unpacking objects:100%(3/3), done.
From 192.168.252.128:/srv/myfiles
 ae72bcc..afad897  master     -> origin/master
Updating ae72bcc..afad897
Fast-forward
test.txt |3++-1 file changed,2insertions(+),1deletion(-)

複数のユーザーの複雑な操作については、http://www.ruanyifeng.com/blog/2014/06/git_remote.htmlを参照してください。

その他の構成

gitアカウントのシェルを無効にする

セキュリティ上の理由から、gitアカウントのシェルを無効にする必要がある場合は、/ etc / passwdファイルを変更できます。

入れて

git:x:1001:1001:git-user,,,:/home/git:/bin/bash

着替える

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

/ usr / bin / git-shellのパスは、コマンド whichgit-shellで取得できます。

公開鍵と秘密鍵を使用して、秘密のない効果を実現します

上記のプロセスでは、サーバーと対話するためにgitユーザーのパスワードを毎回入力する必要があり、これは非常に面倒です。この時点で、暗号化を実現するために公開鍵と秘密鍵を構成できます。

まず、クライアントで公開鍵と秘密鍵を生成する必要があります。

ssh-keygen -t rsa

Enterキーを押すと、秘密鍵のパスワードを入力するように求められます。秘密を回避する場合は、Enterキーを直接押します。それ以外の場合は、パスワードをカスタマイズできます(パスワードをカスタマイズする場合は、プッシュおよびプルするたびに設定されたパスワードを入力します)。

コマンドが正常に実行されると、ファイル「id_rsa」および「id_rsa。」が現在のユーザーディレクトリの.sshフォルダーに生成されます(WindowsディレクトリはX:\ Users {username} .ssh、Linuxは/home/{username}/.ssh)。 pub」。ここで、.pubファイルは公開鍵であり、もう1つは秘密鍵です。

ファイル「id_rsa.pub」をサーバーにコピーし、次のコマンドを使用して設定します。

mkdir /home/git/.ssh
cp /home/currentuser/Desktop/id_rsa.pub /home/git/.ssh/authorized_keys
chown -R git:git /home/git/.ssh

authorized_keysファイルが存在しない場合は、cpコマンドを使用できます。それ以外の場合は、catコマンドを使用して次のように追加します。

cat /home/currentuser/Desktop/id_rsa.pub >>/home/git/.ssh/authorized_keys

構成を確実に有効にするには、/ etc / ssh / sshd_configファイルの次の設定が有効になっているかどうかも確認する必要があります。

AuthorizedKeysFile %h/.ssh/authorized_keys

コメントアウトされているかどうかにかかわらず、コメントアウトされている場合は、前の#を削除して、sshサービスを再起動する必要があります(コマンドservice ssh restart)。

すべての構成が完了したら、次の効果を試します。

$ git pull
Already up-to-date.

ほら、今回はパスワードを入力するプロンプトがありませんよね?パスワードなしの設定が有効になります。

**22ポート以外の接続Git **

.ssh構成ディレクトリの構成ファイルには、次のものが含まれています。

ホストIPアドレス
ポートポート名

WindowsおよびMacシステムでの構成構成ファイルの場所は次のとおりです。X:/users/username/.sshディレクトリ。Xはシステムディスク、usernameは現在のログインユーザー名です。

liunxシリーズシステムの場合、場所は/home/username/.sshディレクトリです。ここで、usernameは現在のログインユーザー名です。

Recommended Posts

UbuntuでGitサーバーを構築する方法を教えてください
Centosサーバーでgiteaをセットアップする方法を教える3分
Ubuntu18.04でDNSサーバーを設定する方法
Ubuntu20.04にGitをインストールする方法
Ubuntu20.04にGitをインストールする方法
ubuntuでファイルサーバーを構築する
Ubuntu16.04でNFSファイル共有サーバーを構築する方法
ubuntu16.04でnfsサービスを構築する方法
Ubuntu14.04にBaculaServerをインストールする方法
Ubuntu16.04でSambaサーバーを使用する方法
Ubuntu16.04サーバーにZabbixをインストールする方法
Ubuntu18.04サーバーで静的IPを設定する方法
Ubuntu18.04サーバーで静的IPを設定する方法
ドッカーをubuntuサーバーにすばやくデプロイする方法
Jenkinsを使用してUbuntuで自動的にビルドする方法
centos7.2でLAMP環境を構築する方法
Ubuntu14.04で解析サーバーを実行する方法
Ubuntu18.04にGitをインストールする方法[クイックスタート]
Ubuntu14.04でHexoを使用してブログを開始する方法
Ubuntu18.04に基づいて固定IPを構成する方法
Ubuntu16.04に基づいて固定IPを設定する方法
Ubuntuシステム拡張ツールのインストール方法を教えてください
Ubuntuのnginxサーバーでhttpsを開く方法
Ubuntu20.04にMemcachedをインストールする方法
ubuntuでNginx-RTMPライブサーバーを構築する
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
CentOS8にGitをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu14.04でMasterlessPuppet環境をセットアップする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu14.04でUFWを使用してファイアウォールを設定する方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu14.04でPHP7にアップグレードする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu14.04にDjangoをデプロイする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にRをインストールする方法
Ubuntu14.04で本番Elasticsearchクラスターをセットアップする方法