15

小さなプロジェクトを管理するために git を使用しています。私はすべてのトランザクション (クローン、プッシュ、プルなど) を SSH 経由で実行してきましたが、http で git-clone を実行して実験したかったので、最近 git-update-server-info を実行しました。それはうまくいきました。涼しい。今では、資格情報なしで誰でも私のリポジトリを http 経由でクローンできることに気付きました。私は gitosis を介して http 認証を設定することを漠然と認識していますが、それは本当に私が望んでいるものではありません。http クローニングを完全に無効にすることをお勧めします。

ssh 経由のトランザクションのみを許可するように git に指示する方法はありますか? または、最初に git-update-server-info を実行して http でのクローン作成を有効にしたときに行ったことを元に戻すことはできますか?

4

3 に答える 3

6

ssh 経由のトランザクションのみを許可するように git に指示する方法はありますか?

6 ~ 8後、Git 2.12 (2017 年第 1 四半期) では、Git で使用されるプロトコルを許可または無効にする構成が提案されます。

 git config protocol.http.allow never
 git config protocol.https.allow never
 git config protocol.git.allow never
 git config protocol.file.allow never

 git config protocol.ssh.allow always

Jeff King ( )によるcommit abcbdc0 (2016 年 12 月 14 日)を参照してください。commit a768a02 、commit aeae4dbcommit f1762d7commit f962ddfcommit 85e4205 (2016 年 12 月 14 日) by Brandon Williams ( )を参照してください。( 2016 年 12 月 27 日コミット 9d540e9Junio C Hamanoによってマージされました)peff
mbrandonw
gitster

これにより、クローン/フェッチ/プッシュ中にトランスポートに許可されるプロトコルをより細かく制御できるようになり、新しい構成メカニズムを介して有効になりました。

git config現在含まれているもの:

protocol.allow

設定されている場合、明示的にポリシーを持たないすべてのプロトコルに対してユーザー定義のデフォルト ポリシーを提供します ( protocol.<name>.allow)。
デフォルトでは、設定されていない場合、

  • 既知の安全なプロトコル (http、https、git、ssh、ファイル) のデフォルト ポリシーはalways
  • 既知の危険なプロトコル (ext) のデフォルト ポリシーはnever、および
  • 他のすべてのプロトコルのデフォルト ポリシーはuserです。

サポートされているポリシー:

  • always- プロトコルは常に使用できます。
  • never- プロトコルは使用できません。
  • user- プロトコルはGIT_PROTOCOL_FROM_USER、設定されていないか、値が 1 の場合にのみ使用できます。
    このポリシーは、プロトコルをユーザーが直接使用できるようにしたいが、クローン/フェッチを実行するコマンドで使用したくない場合に使用する必要があります。ユーザー入力なしの /push コマンド (再帰的なサブモジュールの初期化など)。
于 2016-12-28T21:02:46.593 に答える