#やりたいこと
GitのリモートリポジトリをEC2上に構築したかった。
アパッチは使っていないし、SSHで鍵認証のアクセスも。
実際EC2側の準備はすぐに済んだのだが、WindowsのGitからSSHしに行くところでかなりはまった
自分用の手順書みたいなものなので、
環境次第で動かないことはザラだと思いますが、
同じように困っている人の一助になれば幸いです。
#EC2側の準備
まずはGit用のユーザーを作成して、
ホームディレクトリにGitリポジトリを置くディレクトリを作る
※ユーザー作成後は全てGit用ユーザーでコマンドを実行すること
useradd gituser
passwd gituser
su gituser
#リポジトリを置くディレクトリ名はhoge.gitにする慣例があるとかないとか
mkdir /home/giuser/test.git
cd /home/giuser/test.git
#--bare を付けるとワークディレクトリを持たない.gitのみのリポジトリになる
#プッシュ先のリモートリポジトリとして作成する場合は基本的には--bareを付ける
git init --bare
これでGitの準備はOK
次はSSH鍵を作る
ssh-keygen -t rsa
このコマンド入力後、パスフレーズの入力を求められるが
面倒なので入力せずエンターでパスする。
すると、
/home/gituser/.ssh/id_rsa
=>秘密鍵(クライアントで使うやつ)
/home/gituser/.ssh/id_rsa.pub
=>公開鍵(サーバーに置いておくやつ)
の二つのファイルが作られる
EC2のCentosのインスタンスでは公開鍵は
/home/username/.ssh/authorized_keys
というファイル名で保存される必要があるので、
そのようにするのと、
鍵関係のパーミッションは規定が決まっているのでそちらも変更する
mv /home/gituser/.ssh/id_rsa.pub /home/gituser/.ssh/authorized_keys
chmod 700 /home/gituser/.ssh/
chmod 600 /home/gituser/.ssh/authorized_keys
ここまででEC2側の設定は終わり。
#クライアント側の設定
クライアント側ではGitに秘密鍵の場所を設定する必要がある
SouceTreeではPutty及びPuttyKeygen、pagentなどを使った
SSH接続が推奨されているようであるが、
私の環境ではなぜか鍵の認証がうまくいかなかった・・・・
なので、PuttyではなくOpenSSHを使用してSSH接続をする。
気が向いたらスクショをあげるが、今は箇条書きで
・SSHクライアントPuttyからOpenSSHに変更する
・GitクライアントをSouceTree組み込みのものでなく、システムで使用しているものに変更
=>Windows用Git単体でインストールしておく
Windows用GitにはOpenSSHが組み込まれている。
・C:\Program Files\Git\etc\sshみたいな感じのディレクトリがあるはず
ここのssh_configというファイルを下記の様に編集または追記
Host xxx.xxx.xxx.xxx 接続先
HostName xxx.xxx.xxx.xxx ここも接続先
Port 22 SSHポート番号
User gituser SSHログインユーザー
IdentityFile C:\path\to\key 公開鍵へのパス
ソースツリーからでも、GitBashからでもいいのでクローンしてみる
git clone ssh://gituser@xxx.xxx.xxx.xxx/home/gituser/test.git
以上。