vpn连接虚拟网卡错误
方法来对用户进行认证。 同时我们假设你使用的操作系统是标准的 Linux 发行版,比如 Ubuntu。 首先,创建一个操作系统用户
接着,我们需要为系统用户git的authorized_keys文件添加一些开发者 SSH 公钥。 假设我们已经获得了若干受信任的公钥,并将它们保存在临时文件中。 与前文类似,这些公钥看起来是这样的:
现在我们来为开发者新建一个空仓库。可以借助带--bare选项的git init命令来做到这一点,该命令在初始化仓库时不会创建工作目录:
接着,John、Josie 或者 Jessica 中的任意一人可以将他们项目的最初版本推送到这个仓库中, 他只需将此仓库设置为项目的远程仓库并向其推送分支。 请注意,每添加一个新项目,都需要有人登录服务器取得 shell,并创建一个裸仓库。 我们假定这个设置了git用户和 Git 仓库的服务器使用gitserver作为主机名。 同时,假设该服务器运行在内网,并且你已在 DNS 配置中将gitserver指向此服务器。 那么我们可以运行如下命令(假定myproject是已有项目且其中已包含文件):
需要注意的是,目前所有(获得授权的)开发者用户都能以系统用户git的身份登录服务器从而获得一个普通 shell。 如果你想对此加以限制,则需要修改/etc/passwd文件中(git用户所对应)的 shell 值。
借助一个名为git-shell的受限 shell 工具,你可以方便地将用户git的活动限制在与 Git 相关的范围内。 该工具随 Git 软件包一同提供。如果将git-shell设置为用户git的登录 shell(login shell), 那么该用户便不能获得此服务器的普通 shell 访问权限。 若要使用git-shell,需要用它替换掉 bash 或 csh,使其成为该用户的登录 shell。 为进行上述操作,首先你必须确保git-shell的完整路径名已存在于/etc/shells文件中:
这样,用户git就只能利用 SSH 连接对 Git 仓库进行推送和拉取操作,而不能登录机器并取得普通 shell。 如果试图登录,你会发现尝试被拒绝,像这样:
此时,用户仍可通过 SSH 端口转发来访问任何可达的 git 服务器。 如果你想要避免它,可编辑authorized_keys文件并在所有想要限制的公钥之前添加以下选项:
现在,网络相关的 Git 命令依然能够正常工作,但是开发者用户已经无法得到一个普通 shell 了。 正如输出信息所提示的,你也可以在git用户的主目录下建立一个目录,来对git-shell命令进行一定程度的自定义vpn连接虚拟网卡错误。 比如,你可以限制掉某些本应被服务器接受的 Git 命令,或者对刚才的 SSH 拒绝登录信息进行自定义,这样,当有开发者用户以类似方式尝试登录时,便会看到你的信息。 要了解更多有关自定义 shell 的信息,请运行git help shell。
Patches, suggestions, and comments are welcome.Git is a member ofSoftware Freedom Conservancy