ここにちょっとしたチェックリストがあります:
- 接続しようとしているサーバーで ssh が有効になっていますか?
- GIT はサーバーにインストールされていますか?
- サーバーに Git リポジトリがセットアップされていますか?
- リポジトリは正しいパーミッションであり、サーバーの構成で sharedrepository が有効になっていますか?
GIT 用の適切な場所に ssh キーがありますか?
提案:
1: putty で接続できるので、ssh の設定はOKのようです。
2: putty を使用してサーバーに接続します。git --version
適切な応答が返ってきますか? と入力し ます。そうでない場合は、サーバーにインストールする必要があります。
3:サーバーに新しいリポジトリを設定してみてください。*nix スタイルのサーバーが putty を使用してサーバーに接続し、次のコマンドを使用して新しいリポジトリを作成すると仮定します。ディレクトリが /home/source_code であると仮定します。エコー行は、少しのテキストを含むファイルを作成するだけなので、何かを開始する必要があります。
cd /home/source_code
mkdir test_repo
cd /home/source_code/test_repo
echo "first file" > t.txt
git init
git add .
git commit -m "Initial Import"
これで、1 つの t.txt ファイルを含むリポジトリができました。原則として、作業コピーへの変更を含むリポジトリにはプッシュしないでください。サーバー上にリポジトリを持つ目的は、人々がいつでもリポジトリにプッシュできるようにすることです。git データベースのみである「ベア」クローンを作成します。これにより、作業コピーが変更される可能性がなくなります。中央の git リポジトリとして使用するのは、この「ベア」クローンです。
cd /home/source_code
git clone --bare test_repo/ test_repo.git
これで、セットアップした一時リポジトリを削除できます。
cd /home/source_code/
rm -rf test_repo
ローカル コンピューターで、もう一度クローンを作成してみてください
git clone ssh://user@host.com:port/home/source_code/test_repo.git
4: パーミッション: 読み取りアクセス権のないリポジトリの場所を選択していない限り、クローン作成、フェッチ、またはプルで問題が発生することはありません。プッシュバック時にアクセス許可が拒否されたというエラーが発生した場合は、アクセス許可の修正を参照してください。
5: GIT の公開/秘密鍵の設定:
- パテでサーバーに接続する
- ~/.ssh フォルダーにアクセス許可を設定します。
chmod 700 .ssh
- ~/.ssh/authorized_keys にアクセス許可を設定します。
chmod 600 authorized_keys
- キーを生成する
ssh-keygen -t dsa
- 使用したいファイル名を受け入れる
- パスフレーズを入力しないでください (入力するだけです)。後でパスフレーズを使用してこれをやり直す必要があります。
- pub キーを authorized_keys ファイルに追加します。
cat id_dsa.pub >> .ssh/authorized_keys
- /etc/ssh/ssh_config を編集して次の行を追加します
PubkeyAuthentication yes
- sshデーモンを再起動します
sudo /etc/init.d/ssh restart
- サーバーからローカル ハード ドライブにコピー
id_dsa
しid_dsa.pub
ます (winscp や sftp などのツールを使用します) c:\users\userName\.ssh ディレクトリ (これは Vista の場合で、他のバージョンの Windows では場所が少し異なります)
- tortoise git を C:\Program Files\Git\bin\ssh.exe (パテではない) を指すように設定します。
コマンドライン git と tortoise git の両方が機能するようにセットアップする必要があります。ローカル マシンでもう一度クローンを作成してみてください。
git clone ssh://user@host.com:port/home/source_code/test_repo.git
ここで、パスフレーズを使用してキーの設定を繰り返したいと思うかもしれません....