对具有 git 存储库的服务器进行“半” ssh 授权

对具有 git 存储库的服务器进行“半” ssh 授权

目前我已经购买了具有 ssh 访问权限的网络托管。

我已经在其上创建了一个 git 存储库,如果我在文件中设置我的公钥~/.ssh/authorized_keys,我就可以访问该存储库,我可以推送/拉取数据等。

authorized_keys此解决方案允许每个在文件中拥有其公钥的用户进行访问。

但有一件事我想避免。每个用户都可以登录到服务器并可以访问整个 ssh 帐户。

是否可以创建无法访问 ssh 的用户密钥黑名单?

我是这样认为的:

  • 用户登录到 git - 好的,允许每个人
  • 用户登录ssh账户
  • ~/.profile文件被挂接并调用自定义脚本:
    • 检查用户的公钥
    • 如果公钥在~/.ssh/blacklist_keys调用 bash exit/logout

有任何方法可以实现吗?

答案1

不要只使用普通的 git,你应该考虑使用吉托莱特。Gitolite 旨在执行这种基于 SSH 的身份验证,而无需向机器提供真正的 SSH 访问权限。它还附带一些额外的好处,例如强大的 ACL 和每个标签和每个分支的权限。

您还可以使用吉托西斯它的用途更为广泛,但作者建议使用 Gitolite 来获得附加功能。

答案2

您可以禁用特定用户的 shell 登录。

chsh -s /sbin/nologin {username}

不要乱用配置文件(.profile、.bash_profile、.bashrc 等)。它们不是用来限制登录的。

相关内容