我试图连接到位于我的Web服务器上的远程Git仓库,并将其复制到我的机器。
我使用我的命令格式如下:
git clone ssh://username@domain.com/repository.git
这对于大多数我的团队成员的正常工作。 通常运行该命令后Git会提示用户输入的密码,然后运行该克隆。 然而,在我的机器之一上运行时,我得到了以下错误:
主机密钥验证失败。
致命的:无法从远程存储库中读取。
我们不使用SSH密钥连接到这个仓库,所以我不知道为什么Git是检查这一个特定的机器上。
Answer 1:
您是通过SSH协议连接。 通过使用SSH,每个主机有一个关键。 客户记得与特定地址相关联的主机密钥和拒绝,如果主机密钥出现改变连接。 这可以防止中间人攻击。
domain.com的主机密钥已经改变。 如果这似乎并不腥的话 ,你可以使用从本地缓存中删除旧的密钥
$ ssh-keygen -R domain.com
我强烈建议您考虑让用户键认证为好。 这样, ssh-agent
可以存储密钥资料的便利(而不是为每个连接到服务器的进入她的密码,每个人)和密码不要超过网络。
Answer 2:
正如我在前面回答克隆混帐回购协议将导致错误-主机密钥验证失败。 致命:远程端挂机意外 ,加入GitHub的授权的主机列表:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
Answer 3:
我有类似的问题,但是,使用SSH密钥。 从Tupy的答案,上面,我想通了,这个问题是known_hosts文件不存在或不github.com存在已知的主机列表。 下面是我跟着来解决它的步骤 -
-
mkdir -p ~/.ssh
-
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
-
ssh-keygen -t rsa -C "user.email"
- 添加id_rsa.pub关键SSH密钥列表上的GitHub的个人资料。
Answer 4:
这是发生,因为github上目前不在你的已知主机。
你应该提示的github添加到您的已知主机。 如果这种情况没有发生,你可以运行ssh -T git@github.com
再次收到提示。
Answer 5:
对于我来说,我必须键入“是”,询问提示“你确定要继续连接(是/否)?” 而不是只按Enter键。
Answer 6:
我有一个新安装的系统上同样的问题,但这是一个udev的问题。 有没有/dev/tty
节点,所以我不得不这样做:
mknod -m 666 /dev/tty c 5 0
Answer 7:
如果你是在办公室内联网(否则危险),它总是由防火墙保护只是有以下几行你的〜/ .ssh / config中
主机*
StrictHostKeyChecking没有
UserKnownHostsFile =的/ dev / null的
Answer 8:
什么工作对我来说是第一次添加新的电脑我的SSH密钥,我跟着这些指示GitLab -添加SSH密钥 。 需要注意的是,因为我在Win10,我不得不这样做在Git中的Bash在Windows上的所有这些命令(它没有在常规DOS CMD壳牌工作)。
然后再在Git中猛砸,我不得不做一个git clone
,我有问题的回购,并在我的情况,我不得不把它克隆到一个不同的名字,因为我已经在本地,不想失去我的提交。 例如
git clone ssh://git@gitServerUrl/myRepo.git myRepo2
然后我得到了及时将其添加到已知主机列表中,该问题可能是这一个:
你确定要继续连接(是/否)?
我输入“是”最后和它的工作,你通常应该得到类似这样的消息:
警告:永久添加“[您的回购链接]”(ECDSA)与已知主机列表。
注 :如果您使用的是Windows,请确保您使用的Git Bash的所有命令,这并没有在正规CMD壳或PowerShell的工作,我真的不得不这样做在Git中击。
最后我删除了第二个克隆回购( myRepo2
中的例子),又回到我的第一个回购协议,我终于可以做所有的东西的Git正常人一样,我喜欢的编辑器VSCode。
Answer 9:
如果您在使用Git的Windows。
- 打开git的GUI。
- 打开git的GUI本地的Git仓库。
- 添加远程或推如果远程已经存在。
- 回答“是”你是否要继续的问题。
GUI客户端增加了你的关键~/.ssh/known_hosts
。 这是比较容易记住,如果你不这样做,往往也避免了使用git的命令行(标准Windows命令行没有需要ssh-keyscan
可执行文件。
Answer 10:
它会将您的远程主机密钥被改变(可能是主机密码更改)
终端建议执行此命令作为根用户
$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]
你必须删除您的PC /服务器上的主机列表中的主机名。 复制所建议的命令,并执行作为根用户。
$ 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
再试一次,希望这个作品。
Answer 11:
我有类似的问题,不幸的是我用GitExtensions HMI和忘记了,我写了一个密码。 随着HMI ....算了吧! 当生成你的密钥,不要输入密码!
Answer 12:
您可以在Jenkinsfile“https”开头的URL格式或任何你想用你的“混帐网址”。
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
Answer 13:
在编译的时候我面临内部DockerFile同样的错误,而形象是公众。 我做一点修改在Dockerfile。
RUN git clone https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs
这是因为使用git@github.com:...语法结束>使用SSH克隆,并在容器内,你的私钥不>可用。 你需要使用运行git克隆> https://github.com/edenhill/librdkafka.git代替。
Answer 14:
当记者问:
Are you sure you want to continue connecting (yes/no)?
键入yes作为响应
这是我如何解决我的问题。 但是,如果你尝试,只要按下回车键,它不会工作!
Answer 15:
当我试图我得到这个消息git clone
一个回购协议,这是不是我的。 伦敦定盘叉,然后克隆。
文章来源: Git error: “Host Key Verification Failed” when connecting to remote repository