Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
使用SSH连接到自己的web服务器上的Git repo_Git_Ssh_Gitlab - Fatal编程技术网

使用SSH连接到自己的web服务器上的Git repo

使用SSH连接到自己的web服务器上的Git repo,git,ssh,gitlab,Git,Ssh,Gitlab,我有两台网络服务器。在服务器A上,我安装了一个GitLab 在服务器B上,我刚刚初始化了一个裸Git repo 现在,我想使用 为此,我需要一个HTTPS或SSH url,我想用SSH来实现 问题1:我需要在那里插入什么url?我想应该是ssh://ssh-user@server-b.com:git repos/project.git的路径。是这样吗 问题2:由于连接到url的用户是GitLab的Git用户,我想我需要为该用户创建自己的SSH密钥,并将公钥添加到我的web服务器。既然Git用户除

我有两台网络服务器。在服务器A上,我安装了一个
GitLab

在服务器B上,我刚刚初始化了一个裸Git repo

现在,我想使用

为此,我需要一个HTTPS或SSH url,我想用SSH来实现

问题1:我需要在那里插入什么url?我想应该是
ssh://ssh-user@server-b.com:git repos/project.git的路径
。是这样吗


问题2:由于连接到url的用户是GitLab的Git用户,我想我需要为该用户创建自己的SSH密钥,并将公钥添加到我的web服务器。既然Git用户除了在终端级别上使用Git命令外,没有任何权限执行任何操作,我该怎么做呢?我想我需要用我的GitLab服务器的根用户创建它,但是我该怎么做呢?当我以root用户身份连接时,我甚至找不到Git用户的home dir。

ssh://ssh-user@server-b.com:git repos/project的路径。如果git repos/project.git
的路径由用户ssh user拥有,并且没有其他git托管服务,则git是正确的URL

由于连接到url的用户是GitLab的Git用户,我想我需要为该用户创建一个自己的SSH密钥,并将公钥添加到我的web服务器

是的,需要创建专用的私有/公共ssh密钥对,公共密钥对将转到serverB
~ssh user/.ssh/authorized_keys
:您可以自己复制它。
检查服务器A上的
ps-eaf | grep gitlab
:您将看到哪个帐户正在运行gitlab。
在帐户
~/.SSH
文件夹中创建SSH密钥

从评论来看,诀窍是:

  • 从根帐户生成ssh密钥对,并将密钥移动到
    ~git/.ssh
  • 要将
    ~git/.ssh/id\u rsa.pub
    复制到
    serverB
    ~ssh user/.ssh/authorized\u密钥
  • 从根帐户测试ssh连接(因为git帐户仅限于GitLab命令)

这样做的副作用是填写
~root/.ssh/known\u hosts
文件,然后将其复制到
~git/.ssh/known\u hosts

  • 要使用SSH URL,请执行以下操作:

    ssh://ssh-user@server-b.com/absolute/path-to-git-repos/project.git
    

镜像可以开始工作。

好的,那么我的想法是对的。我通过键入
echo~git
找到了git用户的home dir,它实际上是
/var/opt/gitlab
。但是当我与根用户连接时,它仍然会为根用户创建一个密钥(当我选中
/var/opt/gitlab/git.pub
时,它以
结尾)root@server-a
)。如何为那里的git用户生成SSH密钥?@Froxx密钥的结尾并不重要。重要的是它归git所有,右边是
chmod 600
,默认名称是
id\u rsa
。正如我提到的那样,
id\u rsa.pub
内容是通过serverB复制的。然后它可能会起作用,除非GitLab决定强制执行其文档中所说的内容,即存储库必须首先通过
http://
https://
git://
@Froxx访问,否则URL必须使用绝对路径:
ssh://ssh-user@server-b.com/absolute/path to git repos/project.git
(注意“
/
”而不是“
”)。其次,首先测试您的SSH连接(作为serverA上的用户git)
SSH-T SSH-user@server-b、 com
:您应该可以在那里打开连接。@Frox哦,对了。与ssh密钥本身无关,只有
~git/.ssh/known_hosts
文件()。能否将
~root/.ssh/known_hosts
复制到
~git/.ssh/known_hosts
?并将
chown
复制到
git
,然后再试一次。@Froxx我已编辑了答案,以使注释中的各个步骤更清晰可见。
ssh://ssh-user@server-b.com/absolute/path-to-git-repos/project.git