web-dev-qa-db-ja.com

Gitリポジトリのみを使用するように制限された権限を持つSSHユーザーを作成する

SunOSサーバーでホストされているgitリポジトリがあり、sshを介してリモートで使用しています

git clone ssh://[email protected]/path/to/git

次に、そのリポジトリにアクセスできるようにするために、さらにユーザーを追加する必要がありますが、方法はわかりません。

SshにtestUserを1つ追加しましたが、そのユーザー特権をgitのみを使用するように制限することはできません。

testUserはsshを介してサーバー全体を参照できます。

リモートでgitにのみアクセスできるユーザーを作成し、クローン/プル/プッシュなどを行うにはどうすればよいですか?.

ありがとう

12
Bach

複数のgit-Shellユーザーを設定する代わりに、単一のユーザーの下で gitolite を使用することを検討する場合があります(また、必要なグループとグループのアクセス許可により、リポジトリへのアクセスを共有できます。

gitoliteはサーバー上の単一の通常ユーザーの下で実行され、SSH公開鍵を使用してGitリポジトリへのアクセスを区別します(「 gitoliteによるsshの使用方法 」を参照) gitoliteがSSHベースの識別を行う方法の詳細の一部)。 gitoliteは、リポジトリごと、ブランチごと、さらにはパスごとのアクセス制御を提供します。

12
Chris Johnsen

基本的に2つのオプションがあります。

  1. トップドッグが述べたように、サーバー上にユーザーを作成するときは、シェルを git-Shellここに本のエントリ )に設定します。これにより、ユーザーはSSH経由でログインできますが、通常のフル機能のシェル(sh、bashなど)を実行する代わりに、git機能へのアクセスのみを提供するgit-Shellを実行します。

  2. または、TCP( git-deamon を使用)など)またはHTTP/HTTPSなどの別のプロトコルを介してリポジトリを使用可能にすることもできます。このようなシナリオのみをお勧めしますただし、読み取り専用アクセスの場合。

あなたはユーザーの「プッシュ」機能をサポートしたいと述べているので、あなたは本当にオプション#1に行くべきです。

12
chuckx

シェルをgit-Shellに変更する必要があります。これにより、Git関数へのアクセスのみが許可されます。

5
topdog

これを行う別の方法は、ssh内のユーザーのアクセスを制限することです。

http://prefetch.net/blog/index.php/2006/09/05/limited-access-to-openssh-directives/

この例は1人のユーザーのみを使用するものですが、ユーザーが同じグループに属している場合は、グループディレクティブを使用してそれらを除外できます。何かのようなもの

AllowTcpForwarding yes
X11Forwarding yes

Match Group Users
         AllowTcpForwarding no
         X11Forwarding no
         $Here is a directive for git$
0