Information

はとぴょん

Author: はとぴょん

FC2ブログへようこそ!

Recent Posts

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • -
  • -
先日我が家で24時間起動しているUbuntu君(普段はMinecraftServer)についでにGitサーバーのお仕事もお願いしたのでセットアップのメモ

必要なもの
・サーバーマシン(Ubuntu)
・SSHサーバー(OpenSSH)
・Gitサーバー
SSHサーバーは、Gitを利用している人がプッシュ/プルをするとき、通信のために必要です。

クライアントはWindows+TorToiseGitを想定しています。
コマンドラインからのGitはやったことないのでわからないです…。



大まかな手順は
 ・Git用ユーザーの作成
 ・SSHサーバーのインストール
 ・SSHサーバーのセッティング(鍵の生成)
 ・鍵の変換
 ・Gitサーバーのインストール
 ・サーバー側のリポジトリの設定

です

・Git用ユーザーの作成

まずは、ユーザーアカウント(っていうとなんかWindowsみたいですねw)を作ります
$ sudo useradd git
2017.5.5編集
$sudo adduser git
↑こっちのほうがわかりやすいかもしれないですね。ホームディレクトリとかが作られるので。


今回はgitという名前のユーザーを作りました
もちろん何でも大丈夫です。グループ等は特に設定しませんでした。



・SSHサーバーのインストール

サーバーをインストール(たいていの人はすでに入っていると思いますが笑)
$ sudo apt-get install openssh-server
はい、これだけですw

インストールすると自動的にsshサーバーがデーモンとして起動してきますので、次のコマンドが使えます
停止: $ sudo /etc/init.d/ssh stop
再起動: $ sudo /etc/init.d/ssh restart
開始: $ sudo /etc/init.d/ssh start


・SSHサーバーのセッティング(鍵の生成)

私は最初これに少し躓きました。
Gitでは、パスワード認証ではなく鍵交換方式でログインをします。
詳しい説明は避けますが、サーバー側の鍵とクライアント側の鍵が比べられ、問題がなければ認証が通るという方式です。
ユーザー名とパスワードを入れる方式ではありません。

では、まずは鍵の生成から
Ubuntuでコマンドを打ちます
$ ssh-keygen -t rsa
すると

>Generating public/private rsa key pair.
>Enter file in which to save the key (/home/git/.ssh/id_rsa):
と保存場所を聞かれますので、何も入力せずエンターを押します
すると、

>Enter passphrase (empty fo no passpharase):
と聞かれますので、好きなパスワードを設定するか、空でも大丈夫です

>Enter same passpharase again:
もう一度聞かれるのでもう一度入れてください

Your identification has been saved in /home/git/.ssh/id_rsa.
Your public key has been saved in /home/git/.ssh/id_rsa.pub.
(以下略)
と表示され、キーの生成が成功します
ssh-keygen.png

先ほど生成された鍵のうち公開鍵(id_rsa.pub)をリネーム(authorized_keysに)します

$ cd /home/git/.ssh/
ディレクトリを移動し

$ mv id_rsa.pub authorized_keys
ファイルをリネーム。

この時点で
id_rsaとauthorized_keysの二つのファイルがサーバーには残っているはずです。
このうちid_rsaをクライアント(Windows)に移動します。
USBメモリでもなんでも使ってください
そして、サーバー側にはid_rsaは残さないようにします。

この後必要に応じてSSHサーバーの設定(鍵交換方式以外でのログインを禁止する)を行ってください



・鍵の変換

ここの作業はWindows上で行います

さきほど持ってきた鍵ファイル(id_rsa)を適当な場所に置きます。

続いて、puttygen.exeをダウンロードします
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
こちらから、puttygen.exeをダウンロードして実行してください
puttygen.png
このような画面が開きますので、Loadボタンを押し、先ほどの鍵ファイル(id_rsa)を読み込みます。
鍵生成の時パスワードを設定した場合は、パスワードの入力を求められますので入力します。

読み込みに成功したら、SavePrivateKeyボタンを押し、ファイルを保存します。
この時保存したファイルをGitが使いますので、わかりやすい場所、ただし盗まれにくい場所に保存してください


・Gitサーバーのインストール

こちらのサイトで紹介されていたまんまです。

git,gitのdaemon,sysv-rc-confをインストールします
$ sudo apt-get install git
$ sudo apt-get install git-daemon-sysvinit
※↑git-daemonはsshのみで利用する場合は不要かもしれません。私はわからなかったのでインストールしてしまいました
追記:試しにgit-daemon-sysvinitを削除してもプッシュできましたので、どうやらgit-daemon-sysvinitはSSHで接続するだけなら不要なようです。ですので、「・サーバー側のリポジトリの設定」まで読み飛ばしてもOKです
$ sudo apt-get install sysv-rc-conf


git-daemonの設定ファイルを変更します
まず、gitのリポジトリをどこにするかを決めましょう
私は、/home/git/git/以下にしましたので、

....
GIT_DAEMON_DIRECTORY=/home/git/git/
....
と該当する一行を書き換えました



・サーバー側のリポジトリの設定

こちらも、先ほど紹介したサイトの内容そのままです

では、実際に新しいリポジトリを作りましょう

ディレクトリを移動します
$ cd /home/git/git/

新しくディレクトリを作ります(tutorialを作りましたが、なんでもいいです。普通はプロジェクト名とかにするのでしょうか)
$ mkdir tutorial

もう一度ディレクトリを移動します(忘れると悲惨)
$ cd tutorial

gitに登録します
$ git init --bare


以上でGitサーバーの構築は完了です。
実際にローカルからプッシュしてみてください
お疲れ様でした。



2015.3.28追記

SSHサーバーをデフォルトのポート番号(22番)でグローバルにあけっぱ(ルーターのポート転送機能利用等)にするとどこからともなく総当たり攻撃がやってきます
強力なパスワードを設定したり、鍵交換方式でのみログインを許可したりという設定を行っていれば基本的には大丈夫なはずですが、やはりセキュリティ上もあまり望ましい状況ではありませんし、精神衛生上もよくありません。auth.logもえらいことになります(笑

そこで、ポート番号を変更してグローバルへ開放するのですが、このときTorToiseGitのクライアント側でURLを指定する際、ssh://を明示しないといけないようです

http://hogextend.tumblr.com/post/114821176070/tortoisegit-ssh

意外とハマりますので参考までに。



スポンサーサイト

Comment

Leave a Reply


管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。