gitユーザーがログインするのを防ぎますが、そのユーザーが引き続きgitリポジトリとして機能することを許可しますか?

gitユーザーがログインするのを防ぎますが、そのユーザーが引き続きgitリポジトリとして機能することを許可しますか?

「git」ユーザーを作成し、gitユーザーディレクトリにローカルストアを作成してgitサーバーを設定しました。

gitサーバーはうまく機能し、プル、プッシュなどができます。ユーザーが公開鍵を追加してこれを実行できるようにします。

 .ssh/authorized_keys

文書。パスワードベースのログインを無効にしました。ただし、問題は、これらのユーザーのキーが認証されたキーのリストにあるため、SSHを介してサーバーにログインできることです。もちろん、gitユーザーには権限設定がかなり制限されていますが、gitが直接ログインできない場合はまだ好みます。

「git」ユーザーのログインを無効にするが、git / sshを介してプッシュとプールを許可するgitユーザーの機能を維持する方法はありますか?

答え1

これを使用して、git-shellSSHユーザーアカウントへのアクセスを制限できます。 ~からドキュメントページ:

制限されたGitアクセスを提供するために使用されるSSHアカウントのログインシェル。プル/プッシュ機能を実装するサーバー側のGitコマンドと、ユーザーホームディレクトリのgit-shell-commandsというサブディレクトリにあるカスタムコマンドのみを実行できます。

git-shellデフォルトは非対話型です。ユーザーのデフォルトシェルを次に設定すると、git-shell ユーザーが機能を維持しながら対話的にサーバーにログインするのを防ぎますgit。ある程度カスタマイズできます。これは同じページの「例」セクションに記載されています。

git-shellgitでインストールする必要があります/usr/bin/git-shell。以下を使用して、ユーザーをデフォルトのシェルに設定できますusermod

usermod -s /usr/bin/git-shell username

答え2

セキュリティの観点から見ると、すべてのユーザーに「git」ユーザーとしてログインさせることは最善の考えではありませんが、必要なタスクを実行できる設定オプションは間違いありませんForceCommand。たとえば、「git」というユーザーだけが「git」コマンドを実行できるようにするには、ファイルに以下を追加します/etc/ssh/sshd_config

Match User git
    ForceCommand /usr/bin/git
    AllowTCPForwarding no
    X11Forwarding no

sshd_configマニュアルページを読み、特定の状況に合わせて調整してください。

答え3

インストールすると、gitlab-ce標準以外のユーザーレベルのSSH構成が奇妙な損傷を引き起こす可能性があることを明確にし、それを修正しようとします。

ただし、gitlab-ceWeb インターフェイス経由でキーを追加すると、一部の設定情報も追加されます。

# cat ~git/.ssh/authorized_keys
command="/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell key-1",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AA...restofkeysnip!

ユーザーにはドットファイルがgitなく、シェルは。~/.bashrc~/.profile/bin/shsshd_config

関連情報