web-dev-qa-db-ja.com

安全なGitリポジトリを設定するにはどうすればよいですか?

このチュートリアルに従って、EC2インスタンスにgitリポジトリをセットアップしました。 http://git-scm.com/book/ch4-4.html 。基本的に、新しいgitユーザーを追加し、公開鍵をauthorized_keysに含めます。 gitユーザーを設定した後、git init --bareで新しいリポジトリを初期化するだけです。

ただし、秘密鍵を必要とせずに簡単に複製できることに気づきました。 SSH経由でのみ利用できるようにする方法はありますか?authorized_keysに従いますか?認証をサポートしていないように見えるポート9418であるgitのデフォルトを使用していると思います。

[〜#〜]更新[〜#〜]

さて、キーのない新しいボックスで試してみましたが、ログインしたり、リポジトリを複製したりできませんでした。 ssh-add -Dが何らかの理由で機能しないことに気付きました。私は最も役立つ答えを選んでいます、ありがとう。

6
gerky

ポート9814はgit-daemon実行(例:クローン、git clone git://git.example.com/repo)。これは、内部gitリポジトリ用です。詳細は ドキュメント を参照してください。

リモートgitサーバーを設定するには、他に2つのオプションがあります。

  • SSHサーバー:git clone ssh://git.example.com/git/repo
  • HTTPサーバーgit clone https://git.example.com/git/repo

SSHはセットアップがはるかに簡単です。すべての寄稿者がSSHアカウントにアクセスできることを確認する必要があるだけです。これは通常、SSHキーを介して行われます---各開発者は公開キーをgit SSHアカウントに追加します。

覚えとけ:

  • コマンドでプロトコルを指定します(つまり、sshgithttpまたはhttps)。
  • ファイアウォールが正しく設定されていることを確認してください:
    • 通常、sshのポート22
    • 通常、httpsのポート443
    • 他の2つは避ける必要がありますが、refの場合、gitの場合はポート9814、httpの場合はポート80
8

あなたはgit-daemonが責任を負うという想定の下にいるようです。 git-daemonが実際にシステムで実行されていることを確認しましたか?プロセスリストと開いているポートのリストを確認します。

$ ps auxwww | grep git-daemon
$ Sudo netstat -ptuna | grep 9814

Git-daemonが実行されておらず、ポート9814で何もリッスンしていない場合は、他に何か問題がある可能性があります-追加した新しいgitユーザーにパスワードが設定されていないか、SSH構成がKerberosを使用していて、既存の有効なサービスチケット。

HTTPとSSHは、gitがサポートする半ダースほどのプロトコルの2つにすぎません。私はgitがuser @ Hostという形式のURLでのみSSHを使用することを信じているので、あなたのgitユーザーの認証の問題であると私は確信しています。

リポジトリを複製するときは、システムの認証ログ(通常は/var/log/auth.logまたは/ var/log/secure)を監視します。クローン操作中にgitユーザーのSSHログインが表示された場合は、ほぼ確実にgit-daemonではなくSSHを使用しています。

1
diz