Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 多个Git用户,一台机器,SSH密钥验证_Windows_Git_Windows Server 2012 - Fatal编程技术网

Windows 多个Git用户,一台机器,SSH密钥验证

Windows 多个Git用户,一台机器,SSH密钥验证,windows,git,windows-server-2012,Windows,Git,Windows Server 2012,在我这个问题的例子中,我的公司要求对所有东西进行加密,我们使用隐藏来管理我们的git回购。为了获得访问权限,您必须在您的存储用户帐户上注册SSH密钥,然后您必须具有参与给定项目或存储库的权限 我们希望在AWS机器上建立一个统一的开发环境,这样我们就不会不断遇到新员工的问题,也不会一次又一次地设置他们的环境(目前太忙,无法编写脚本),但Git让这变得异常困难。有没有一种方法可以将多个SSH密钥绑定到一个Git安装中,并使用Git config user.name/email简单地更改用户?为了完成

在我这个问题的例子中,我的公司要求对所有东西进行加密,我们使用隐藏来管理我们的git回购。为了获得访问权限,您必须在您的存储用户帐户上注册SSH密钥,然后您必须具有参与给定项目或存储库的权限


我们希望在AWS机器上建立一个统一的开发环境,这样我们就不会不断遇到新员工的问题,也不会一次又一次地设置他们的环境(目前太忙,无法编写脚本),但Git让这变得异常困难。有没有一种方法可以将多个SSH密钥绑定到一个Git安装中,并使用Git config user.name/email简单地更改用户?

为了完成这项任务,我会抛弃Windows,在GNU/Linux机器上安装Git core gitolite(一个运行的VM,价格非常便宜)。正是一个低调的解决方案,它将Git置于单个系统用户之后,并根据SSH公钥区分各个开发人员。它还允许管理这些开发人员的权限等。您可以通过推送在特殊管理Git存储库中所做的更改来控制
gitolite
实例,该存储库包含开发人员的配置文件和SSH公钥

否则,是:

  • 通过公钥访问帐户由SSH服务器管理 基于该帐户的“授权”密钥列表

    OpenSSH支持一个名为“authorized_keys”的特殊文件,该文件位于 在用户的
    ~/.ssh
    目录下

    OpenSSH的客户端还包括一个特殊命令
    ssh copy id
    它能够使用更新“~/.ssh/authorized_keys”文件 使用SSH公钥的执行本地用户的“标识” 非基于密钥的身份验证(通常是基于密码的“键盘交互”)

  • OpenSSH还为每个键支持一个特殊的修饰符“force_command” 在该文件中,允许限制所连接和 授权用户可以在其会话中调用

    这使得降低攻击面成为可能


请注意,
gitolite
会自动处理这两个问题。

是的,您可以生成多个SSH密钥。我是Linux倡导者,但我的公司非常以Windows为中心,在我可能在Linux上创建统一的开发环境之前,我们必须将许多.NET项目转换为Java。我有一个印象,您的问题是关于设置一个集中的服务器来托管共享的Git存储库。我说得对吗?如果是,这与开发环境有何关系。?这只是一个具有SSH访问权限和大量磁盘空间的服务器。我一直因为过度解释我的问题而受到批评,但这是关于让一台机器成为AWS上的开发环境,其中多个用户可以登录,每个人都应该有自己的repo副本,并且可以使用不同的凭据拉/推/提交。好的,我现在明白了,谢谢。仍然没有完全理解SSH密钥的问题。你能提供一个想象中的清单,说明当你在一个新的开发人员上时应该发生什么吗?比如说,1)在该AWS框上为该开发人员创建了一个概要文件;2) 这个新开发人员应该以某种方式获得一个SSH密钥,该密钥是box通信的所有Git repo“已知”的。关于(2)我是否正确?由于业务需求,服务器不能有多个配置文件/帐户。我们使用不同的凭据登录,但如果每个人都可以登录,他们可以看到和触摸任何东西。1) 新开发人员将获得一个新目录,其中包含他/她自己的.ssh文件夹,以保留其唯一密钥。2) 你是对的,这已经由我们的内部API处理了。3) 任何开发人员都可以从repo的唯一副本编辑/commit/pull/push 4)开发人员可以运行git包装的唯一副本,其中包含唯一路径、用户名等,并将repo目录的根作为参数提供给它。