「git」ユーザーを作成し、gitユーザーディレクトリにローカルストアを作成してgitサーバーを設定しました。
gitサーバーはうまく機能し、プル、プッシュなどができます。ユーザーが公開鍵を追加してこれを実行できるようにします。
.ssh/authorized_keys
文書。パスワードベースのログインを無効にしました。ただし、問題は、これらのユーザーのキーが認証されたキーのリストにあるため、SSHを介してサーバーにログインできることです。もちろん、gitユーザーには権限設定がかなり制限されていますが、gitが直接ログインできない場合はまだ好みます。
「git」ユーザーのログインを無効にするが、git / sshを介してプッシュとプールを許可するgitユーザーの機能を維持する方法はありますか?
答え1
これを使用して、git-shell
SSHユーザーアカウントへのアクセスを制限できます。 ~からドキュメントページ:
制限されたGitアクセスを提供するために使用されるSSHアカウントのログインシェル。プル/プッシュ機能を実装するサーバー側のGitコマンドと、ユーザーホームディレクトリのgit-shell-commandsというサブディレクトリにあるカスタムコマンドのみを実行できます。
git-shell
デフォルトは非対話型です。ユーザーのデフォルトシェルを次に設定すると、git-shell
ユーザーが機能を維持しながら対話的にサーバーにログインするのを防ぎますgit
。ある程度カスタマイズできます。これは同じページの「例」セクションに記載されています。
git-shell
gitでインストールする必要があります/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-ce
Web インターフェイス経由でキーを追加すると、一部の設定情報も追加されます。
# 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/sh
sshd_config