Gitリモートリポジトリの作成(SSH接続)

提供: Akionux-wiki
Share/Save/Bookmark
移動先: 案内検索

サーバー上にSSHでアクセスするGitリモートリポジトリを作る方法[1]
gitのpushおよびpullのみを行うことができるgitというユーザーを作成しておく。

sudo adduser git
$ su git
$ cd
$ mkdir .ssh

クライアントのユーザーがサーバー上のリポジトリにアクセスできるようにssh公開鍵を各自(共有してもよい)生成しgitユーザーのauthorized_keysへ登録しておく。

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys

なお、セキュリティのためにgitユーザーがpushやpull以外のシェル操作ができないようにするためには/etc/passwdのログインシェルをgit-shellに設定しておく。

$ sudo vim /etc/passwd
git:x:1000:1000::/home/git:/usr/bin/git-shell

サーバー上に空のリポジトリを初期化する:

$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init

ここで作成したフォルダやディレクトリの所有者はgit:usersとし、パーミッションは755としておく。gitユーザーのログインシェルをgit-shellにするとこの操作をgitユーザーでできないのがやや難点である。
クライアントで最初のコミット:

# John のコンピューターで
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master

以後はクライアント側からpushおよびpullの操作を行うことができる。

$ git clone git@gitserver:/opt/git/project.git

References