Git 在没有超级用户访问权限的情况下从一台服务器克隆到另一台服务器
Git clone from one server to another without superuser access
我想为我的同事和我在开发服务器和生产服务器之间(以及稍后在本地机器和开发服务器之间)设置一个 git 环境。在 prod、init 上安装了 git,一切正常。
现在我想 git clone
将产品添加到开发中,然后能够将经过验证的功能推送到产品中。我试着用
这样做
git clone ssh://sshUser@111.11.11.111:1234/path/to/git/repos/
问题是,该用户不是超级用户,无法访问该路径。所以当然失败了。我无法连接到 root,因为 PermitRootLogin no
。所以我想到了两种可能性:
- 将
PermitRootLogin no
更改为 PermitRootLogin without-password
并使用 ssh 密钥以 root 身份连接。我想它会起作用。
- 创建另一个超级用户以保持 root 处于停用状态,并对该新用户执行完全相同的操作(可能更安全一些)。
但我不确定这是否是正确的方法,或者我是否有其他我没有想到/未找到相关信息的选择。
提前致谢!
在您的生产系统上拥有需要 root
访问权限的应用程序文件首先不是一个好主意,并且以您描述的方式进一步打开您的 root
帐户是绝对不行的-不。一个好的(即安全的)方法是这样的:
- 创建一个组
myapp
和一个用户 myappadm
。
- 与您的应用程序相关的所有内容(即
/path/to/git/repos/
)都应 chown
为 myappadm:myapp
。
- 所有内容都应由
myappadm
写入,但只能由 myapp
读取。
- 您的网络服务器之类的东西可以进入组
myapp
。
(当然,如果您已经有一个像 myapp
这样的组并且只有 root
而不是 myappadm
那么您可以保留该组并将所有内容都添加到 myappadm
而不是 root
.)
完成后,您将从 ssh://myappadm@...
克隆,一切都会好起来的。有权访问myappadm
的人将无法再接管整个机器,依此类推。
我想为我的同事和我在开发服务器和生产服务器之间(以及稍后在本地机器和开发服务器之间)设置一个 git 环境。在 prod、init 上安装了 git,一切正常。
现在我想 git clone
将产品添加到开发中,然后能够将经过验证的功能推送到产品中。我试着用
git clone ssh://sshUser@111.11.11.111:1234/path/to/git/repos/
问题是,该用户不是超级用户,无法访问该路径。所以当然失败了。我无法连接到 root,因为 PermitRootLogin no
。所以我想到了两种可能性:
- 将
PermitRootLogin no
更改为PermitRootLogin without-password
并使用 ssh 密钥以 root 身份连接。我想它会起作用。 - 创建另一个超级用户以保持 root 处于停用状态,并对该新用户执行完全相同的操作(可能更安全一些)。
但我不确定这是否是正确的方法,或者我是否有其他我没有想到/未找到相关信息的选择。
提前致谢!
在您的生产系统上拥有需要 root
访问权限的应用程序文件首先不是一个好主意,并且以您描述的方式进一步打开您的 root
帐户是绝对不行的-不。一个好的(即安全的)方法是这样的:
- 创建一个组
myapp
和一个用户myappadm
。 - 与您的应用程序相关的所有内容(即
/path/to/git/repos/
)都应chown
为myappadm:myapp
。 - 所有内容都应由
myappadm
写入,但只能由myapp
读取。 - 您的网络服务器之类的东西可以进入组
myapp
。
(当然,如果您已经有一个像 myapp
这样的组并且只有 root
而不是 myappadm
那么您可以保留该组并将所有内容都添加到 myappadm
而不是 root
.)
完成后,您将从 ssh://myappadm@...
克隆,一切都会好起来的。有权访问myappadm
的人将无法再接管整个机器,依此类推。