Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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/0/assembly/5.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
Git在执行';git克隆&x27;_Git_Bitbucket_Redhat - Fatal编程技术网

Git在执行';git克隆&x27;

Git在执行';git克隆&x27;,git,bitbucket,redhat,Git,Bitbucket,Redhat,我在RedHat中使用BitBucket和SSH 因为我在一个公司防火墙后面,所以我用软木钻来使用我们的代理和登录 当我这样做时: ssh -T bitbucket.org 一切正常,我得到了 Logged in as username. You can use git or hg to connect to Bitbucket. Shell access is disabled. 但当我尝试从我的回购中克隆时: git clone git@bitbucket.org:myUser/myRe

我在RedHat中使用BitBucket和SSH

因为我在一个公司防火墙后面,所以我用软木钻来使用我们的代理和登录

当我这样做时:

ssh -T bitbucket.org
一切正常,我得到了

Logged in as username. You can use git or hg to connect to Bitbucket. Shell access is disabled.
但当我尝试从我的回购中克隆时:

git clone git@bitbucket.org:myUser/myRepo.git
我得到:

ssh: Could not resolve hostname bitbucket.org: Name or service not known
fatal: The remote end hung up unexpectedly
repo设置为SSH,我可以使用与gitbash完全相同的设置从我的Windows机器克隆

我错过了什么


更新1:正如下面指出的,
git clone
根本没有使用我的SSH配置。我可以直接运行
ssh
,它可以工作,但是
git clone
甚至无法连接到服务器。git为什么不使用SSH?

结果是,
git clone
使用的是全局SSH设置,而不是我的用户设置。因此,我必须在
/etc/ssh/
上创建新密钥,并在
/etc/ssh/ssh\u config
中添加螺旋式代理设置

我还是一个Linux新手,所以我可能是错的,但我要假设这是因为我必须做
sudogit克隆
。这可能会迫使终端使用全局设置而不是用户设置

我会和我们的IT部门确认这一点


在任何情况下,如果您有类似的问题,请检查git使用的SSH设置是全局的还是用户的。

问题是您在
sudo
下运行的是
git clone
,这意味着您在
root
帐户下运行它,而不是在您自己的帐户下

由于您不是在自己的用户帐户下运行,
git
无权访问您帐户的ssh配置。
gitclone
命令正在使用ssh,它只是将它用于
root
帐户的设置,而不是您的设置

您在评论中说您正在克隆到Apache根文件夹的子目录中。该文件夹属于
root
帐户,因此您的帐户当然没有写入该文件夹的权限

一般来说,出于安全考虑,您不应该使用
root
帐户来执行任何可以从非
root
帐户执行的操作。如果您可以从自己的用户帐户运行
git clone
命令,那么您进行破坏系统的操作的风险就会降低,
ssh
将使用您的个人配置。(修改
root
的ssh配置就可以了,但我认为这不是一个好主意。)

如果要避免以
root
的身份运行
git
命令,则需要将
git克隆到您有写入权限的目录中

一种解决方案是,在Apache根目录下创建目录后,使用
sudo chown
将该目录的所有权更改为您的帐户。然后,您将能够写入该目录,包括运行
git clone
,而不运行
sudo

或者您可以使用
sudo chown
将目录的组所有权更改为您所属的某个组--可能是为此目的创建的组。然后使用
chmod g+w
授予组写入权限。现在,您将能够写入目录,即使它仍然属于
root


或者您可以直接克隆到主目录的子目录中,然后使用
sudo ln-s
在Apache根目录下创建指向您的目录的符号链接。(这样做的一个缺点是,通过查看您的主目录,Apache依赖于此子目录并不明显。)

我对corkscrew一无所知,但当调用git时,它可能不起作用。看起来它需要一个配置文件,也许git会绕过它,直接连接到ssh?你说得对。我搞乱了SSH设置,所以它在执行任何SSH时都会抛出一个错误,当我使用git clone时,它甚至不会显示出来。因此,
git clone
首先没有使用SSH。不知道为什么。
sudo
意味着您的
git克隆
进程以
root
用户身份运行,而不是以您的身份运行,因此它不会使用您的个人设置。但是为什么必须以root用户身份运行
git clone
?这不是个好主意,我希望我知道。但是在没有
sudo
的情况下运行时,我的
权限被拒绝。这是一个企业虚拟机,所以他们不给我根访问权限,sudo是我能做的最好的。但我会让他们看看能做些什么。什么被拒绝了?
git
命令?
git clone
命令?你的本地回购协议?如果您以
root
身份运行
git clone
一次,则
root
拥有您的本地repo目录。尝试在新目录中不使用
sudo
进行
git克隆。(顺便说一句,
sudo
是根访问。)创建repo目录的权限被拒绝。即使目录已经存在,我也必须使用
sudomkdir
创建。所以结果是一样的,对吗?我唯一可以自由操作的地方是我的用户目录
/tank/username/
,但我想在Apache根文件夹中工作。谢谢您的详细解释。我想从我的用户文件夹中创建一个符号链接,但正如你所说,这并不明显,所以我不喜欢它。但另一种使用sudo chown的选择听起来更好更干净。我试试看。再次感谢你D