使用git存储库的服务器的“一半”ssh授权

目前我已经购买了与ssh访问的虚拟主机。

我创build了一个git仓库,如果我在~/.ssh/authorized_keys文件中设置我的~/.ssh/authorized_keys ,我可以访问这个仓库,我可以推/拉数据等等。

这个解决scheme允许每个用户拥有在authorized_keys文件中的公钥。

但是我想避免一件事情。 每个用户也可以login到服务器,并有权访问整个ssh帐户。

是否有可能创build一个用户的密钥黑名单,将无法访问SSH?

我这样看:

  • 用户login到一个混帐 – 确定,允许每一个
  • 用户login到ssh帐户
  • ~/.profile文件被挂钩并调用一个自定义脚本:
    • 检查用户的公钥
    • 如果公钥在~/.ssh/blacklist_keys调用bash exit / logout

有可能吗?

不要只使用普通的git,你应该考虑使用gitolite 。 Gitolite旨在执行这种基于SSH的身份validation,而不会授予对计算机的真正SSH访问权限。 它还带有一些额外的好处,例如强大的ACL和每个标记以及每个分支的权限。

您也可以使用更广泛的使用Gitosis ,但作者build议使用Gitolite的其他function。

您可以禁用特定用户的shelllogin。

 chsh -s /sbin/nologin {username} 

不要混淆configuration文件(.profile,.bash_profile,.bashrc等)。 他们不是限制login。