Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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
Git错误:";主机密钥验证失败“;连接到远程存储库时_Git_Ssh_Ssh Keys - Fatal编程技术网

Git错误:";主机密钥验证失败“;连接到远程存储库时

Git错误:";主机密钥验证失败“;连接到远程存储库时,git,ssh,ssh-keys,Git,Ssh,Ssh Keys,我正在尝试连接到驻留在web服务器上的远程Git存储库,并将其克隆到我的机器上 我的命令使用以下格式: git clone ssh://username@domain.com/repository.git 这对我的大多数团队成员都很有效。通常在运行此命令后,Git会提示输入用户密码,然后运行克隆。但是,在我的一台机器上运行时,我遇到以下错误: 主机密钥验证失败 致命:无法从远程服务器读取 存储库 我们没有使用SSH密钥连接到此存储库,因此我不确定Git为什么要在这台特定的机器上检查一个。您是通

我正在尝试连接到驻留在web服务器上的远程Git存储库,并将其克隆到我的机器上

我的命令使用以下格式:

git clone ssh://username@domain.com/repository.git
这对我的大多数团队成员都很有效。通常在运行此命令后,Git会提示输入用户密码,然后运行克隆。但是,在我的一台机器上运行时,我遇到以下错误:

主机密钥验证失败

致命:无法从远程服务器读取 存储库


我们没有使用SSH密钥连接到此存储库,因此我不确定Git为什么要在这台特定的机器上检查一个。

您是通过SSH协议连接的,如克隆URL上的
SSH://
前缀所示。使用SSH,每个主机都有一个密钥。客户端会记住与特定地址关联的主机密钥,并在主机密钥出现更改时拒绝连接。这防止了中间人攻击。

domain.com的主机密钥已更改如果您觉得这不可疑,请通过编辑
${HOME}/.ssh/known_hosts
删除domain.com的行,或让ssh实用程序使用

ssh-keygen -R domain.com
从这里开始,记录更新后的密钥,或者使用

ssh-keyscan -t rsa domain.com >> ~/.ssh/known_hosts
或者,当您下次连接到
git fetch
git pull
、或
git push
(或者甚至是一个普通的ol'
ssh domain.com
)时,在提示时回答yes,让
ssh
为您做这件事

The authenticity of host 'domain.com (a.b.c.d)' can't be established. RSA key fingerprint is XX:XX:...:XX. Are you sure you want to continue connecting (yes/no)? 无法确定主机“domain.com(a.b.c.d)”的真实性。 RSA密钥指纹是XX:XX:…:XX。 是否确实要继续连接(是/否)? 出现此提示的原因是,删除后domain.com不再位于您的
known_hosts
中,并且可能不在系统的
/etc/ssh/ssh_known_hosts
中,因此
ssh
无法知道连接另一端的主机是否真的是domain.com。(如果
/etc
中存在错误的密钥,则具有管理权限的人必须更新系统范围的文件。)


<>我强烈鼓励您考虑使用密钥对用户进行身份验证。通过这种方式,
ssh-agent
可以方便地存储密钥材料(而不是每个人都必须为每个服务器连接输入密码),并且密码不会通过网络传递。

我在新安装的系统上遇到了相同的问题,但这是一个udev问题。没有
/dev/tty
节点,因此我必须执行以下操作:

mknod -m 666 /dev/tty c 5 0

正如我前面在中所回答的,将GitHub添加到授权主机列表中:


ssh-keyscan-t rsa github.com>~/.ssh/known_hosts

我也有类似的问题,但是使用ssh密钥。根据上面Tupy的回答,我发现问题在于已知主机文件不存在或github.com不在已知主机列表中。以下是我为解决此问题而采取的步骤-

  • mkdir-p~/.ssh
  • ssh keyscan-t rsa github.com>~/.ssh/known_hosts
  • ssh-keygen-t rsa-C“user.email”
  • 使用此命令打开公钥
    $cat~/.ssh/id\u rsa.pub
    ,然后复制它
  • 将id_rsa.pub密钥添加到GitHub配置文件上的SSH密钥列表中
    我也有类似的问题,不幸的是我使用了GitHMI,忘记了我写了一个密码短语。 使用HMI。。。。算了吧!生成密钥时不要输入密码短语

    您可以在Jenkins文件或任何您想要的地方使用“https”url格式的“git url”


    git url:'https://github.com/jglick/simple-maven-project-with-tests.git“

    这表示您的远程主机密钥已更改(可能是主机密码更改)

    您的终端建议以root用户身份执行此命令

    $ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]
    
    您必须从pc/服务器上的主机列表中删除该主机名。复制建议的命令并以root用户身份执行

    $ sudo su                                                        // Login as a root user
    
    $ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]    // Terminal suggested command execute here
    Host [www.website.net]:4231 found: line 16 type ECDSA
    /root/.ssh/known_hosts updated.
    Original contents retained as /root/.ssh/known_hosts.old
    
    $ exit                                                           // Exist from root user
    

    请再试一次,希望这能起作用。

    如果您在office intranet(否则很危险)中,它总是受到防火墙的保护,只需在
    ~/.ssh/config
    中添加以下几行即可

    Host *
      StrictHostKeyChecking no
      UserKnownHostsFile=/dev/null
    

    对我来说,我只需在提示“您确定要继续连接(是/否)”时键入“是”,而不只是按Enter键。

    这是因为github当前不在已知主机中


    应该提示您将github添加到已知主机中。如果没有发生这种情况,您可以运行
    ssh-tgit@github.com
    再次收到提示。

    对我有效的方法是首先添加新计算机的SSH密钥,我按照中的说明进行操作。请注意,由于我使用的是Win10,因此我必须在Git Bash on中执行所有这些命令Windows(在常规DOS命令Shell中不起作用)

    然后在Git Bash中,我不得不对我遇到问题的repo进行
    Git克隆
    ,在我的例子中,我不得不将它克隆到一个不同的名称,因为我已经在本地拥有它,并且不想丢失我的提交

    git clone ssh://git@gitServerUrl/myRepo.git myRepo2
    
    然后我得到了将其添加到已知主机列表的提示,问题可能是:

    是否确实要继续连接(是/否)

    我输入了“是”,它终于起作用了,您通常会收到类似的消息:

    警告:已将“[您的回购链接]”(ECDSA)永久添加到已知主机列表中

    注意:如果您在Windows上,请确保所有命令都使用Git Bash,这在常规cmd shell或powershell中不起作用,我真的必须在Git Bash中这样做


    最后,我删除了第二个克隆repo(
    myRepo2
    ,在本例中)并返回到我的第一个repo,我终于可以在我最喜欢的编辑器VSCode中像普通一样完成所有Git操作。

    如果您使用的是Git for Windows

    • 打开git GUI
    • 在git GUI中打开本地git存储库
    •  RUN git clone  https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs
      
      Host github.com
          IdentityFile ~/.ssh/github_id_rsa
      
      git clone https://github.com/user/repo.git
      
      The authenticity of host 'host.net (10.0.0.42)' can't be established.
      ECDSA key fingerprint is 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00.
      Are you sure you want to continue connecting (yes/no)?
      
      git@gitlab.company.net:upendra/mycode.git
      
      http://gitlab.company.net:8888/upendra/mycode.git
      
      ssh-keyscan -p 8888 -t rsa domain.com >> ~/.ssh/known_hosts
      
      [user]$ less ~/.ssh/known_hosts
      [domain.com]:8888,[000.00.000.000]:8888 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCi...