SlicehostのGitセットアップ

SlicehostサーバーにGitをインストール〜リポジトリにpushするまで。
まず、SlicehostにSSH接続。
Gitのインストール
sudo aptitude install git-core

git用ユーザーの作成
sudo adduser git

SSH認証フォルダを作成
sudo su git
cd /home/git
mkdir .ssh
chmod 700 .ssh

Slicehost Ubuntu Hardyのセットアップで作成しておいた公開鍵(publickey)をコピー
sudo cp /home/demo/.ssh/authorized_keys /home/git/.ssh/
sudo chown git.git /home/git/.ssh/authorized_keys
※後でユーザーを追加したり、開発マシンが変わった際は/home/demo/.ssh/authorized_keysだけでなく、こちら(/home/git/.ssh/authorized_keys)も変更する。

git用ユーザーを許可
sudo vi /etc/ssh/sshd_config
AllowUsers demo git

gitユーザーでsshアクセスしてみて、ログインできればSSH認証はOK。
ssh -p SSHポート番号 git@スライスホストのIP

Slicehostのチュートリアルに従っていると、SSHのポートを22以外に変更していると思うので、その場合必ず-pオプションでポートを指定しないと
ssh: connect to host remote-host.com port 22: Bad file number fatal: The remote end hung up unexpectedly
みたいなエラーが出てしまう。

試しにリポジトリを作成してみる(gitユーザーでログイン)。
cd /home/git
mkdir project1
cd project1
git --bare init
Initialized empty Git repository in /home/git/project1
Initialized〜が表示されればOK。

複数のコミッタがいる場合などはSSHでログインできないように制限する。
passwdファイルを開いて
sudo vi /etc/passwd

最後の行に先ほど追加したgitユーザーの設定があるはずなので
git:x:1001:1001:Git,,,:/home/git:/bin/bash

git:x:1001:1001:Git,,,:/home/git:/usr/bin/git-shell
とすることで、SSHでログインできなくなる。

SSHでアクセスしてみる。
ssh -p SSHポート番号 git@スライスホストのIP
接続できなくなっていれば、OK。
以降は別のユーザーでログインしてsu gitなどとしても
fatal: What do you think I am? A shell?
となって、suできなくなる。

ローカル側にリモートリポジトリを追加。
git remote add ssh://git@スライスホストのIP:SSHポート/home/git/project1
※SSHのポートを変更していれば、ユーザー名の前のssh://と、IPのあとの:SSHポート(:30000など)で、SSHのポートを指定する。しないと、
FATAL ERROR: Network error: Connection timed out
fatal: The remote end hung up unexpectedly
みたいなエラーがでて接続できない。

ここまでできたら、試しににリモートリポジトリにpushしてみる。
$ git push origin master
Counting objects: 39, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (33/33), done.
Writing objects: 100% (39/39), 3.26 MiB | 44 KiB/s, done.
Total 39 (delta 16), reused 0 (delta 0)
To ssh://git@123.456.789:3000/home/git/project1
* [new branch] master -> master
このようになればOK。
作成したリモートリポジトリの所有者がgit用ユーザーになっていないと、permission deniedなどのエラーが出るので注意。

ちなみに、Windows (Vista)+PuTTyでやっていたところずっとエラーが出て接続できず半日悩んだ。
原因はgit bash(msysgit)がSSH認証する際にPageantを起動して、Slicehost用の秘密鍵(private key)を読み込んでいなかったためだった。SSH認証で失敗しているのに、エラーメッセージにその事が含まれていなかったため、原因の特定に時間を要した。

なぜ原因が特定できたかたというとTortoiseGitをインストールして、リモートリポジトリの指定の際に秘密鍵を指定してpushした場合は、puttyのダイアログでパスフレーズを聞いてきて正常に認証できたので、そのままPageantを起動した状態であればgit bash(msysgit)でもpushに成功したためだった。

Slicehost

入門git

入門git

  • 作者: Travis Swicegood
  • 出版社/メーカー: オーム社
  • 発売日: 2009/08/12
  • メディア: 単行本(ソフトカバー)


【関連エントリー】
posted by digital-squad at 2009年09月09日 12時13分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/127648714
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック