Answers:
您正在通过SSH协议进行连接,如ssh://
克隆URL上的前缀所示。使用SSH,每个主机都有一个密钥。客户端会记住与特定地址关联的主机密钥,如果主机密钥似乎发生更改,客户端将拒绝连接。这样可以防止中间人攻击。
domain.com的主机密钥已更改。如果您觉得这没用,请通过编辑${HOME}/.ssh/known_hosts
以删除domain.com的行或通过SSH实用程序为您完成操作,从本地缓存中删除旧密钥。
ssh-keygen -R domain.com
在这里,您可以自己记录更新的密钥
ssh-keyscan -t rsa domain.com >> ~/.ssh/known_hosts
或者等效地,ssh
下一次与,或(甚至是简单的ol' )连接时git fetch
,通过提示您回答“是” ,为您做git pull
git push
ssh domain.com
无法建立主机“ domain.com(abcd)”的真实性。 RSA密钥指纹为XX:XX:...:XX。 您确定要继续连接(是/否)吗?
出现此提示的原因是domain.com known_hosts
在删除后不再在您的手中,并且可能不在系统的目录中/etc/ssh/ssh_known_hosts
,因此ssh
无法知道连接另一端的主机是否真的是domain.com。(如果输入了错误的密钥,则/etc
具有管理特权的人将不得不更新系统范围的文件。)
我强烈建议您考虑让用户也通过密钥进行身份验证。这样,ssh-agent
就可以存储密钥材料以方便使用(而不是每个人都必须为与服务器的每次连接输入她的密码),并且密码不会通过网络传输。
sudo ssh-keygen -R domain.com
可以将现有known_hosts
文件重命名为known_hosts.old
,并创建一个只能由root读取的副本。(-rw------- root root
)您可以轻松地将chown
其返回给适当的用户,但是您也可能会花费一个下午的时间调试git为何被破坏。:D
Are you sure you want to continue connecting (yes/no)?
。不要跟我犯同样的错误。您需要输入yes
。只需按回车键默认情况下不会选择是
正如我之前在克隆git repo中回答的那样,导致错误-主机密钥验证失败。致命:远端意外挂起,将GitHub添加到授权主机列表:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
我有类似的问题,但是使用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"
$ cat ~/.ssh/id_rsa.pub
并复制它。touch
如果~/.ssh
目录不存在,该命令将失败,因此仍然需要执行步骤1。同样,touch
在使用>>
重定向之前,您不需要文件。必要时将创建它(但是仅创建文件,而不是整个路径,因此仍然mkdir -p
需要)。-p
如果目录已经存在,该选项可以使其正常工作。
ssh-keyscan
Github文档缺少有关添加新ssh密钥的#2信息。
Dockerfile
缺乏许可的情况下遇到了问题。在此处添加第二步可以解决该问题!感谢您的出色工作
发生这种情况是因为github当前不在您的已知主机中。
应该提示您将github添加到您的已知主机。如果还没有发生,您可以运行ssh -T git@github.com
以再次收到提示。
我在新安装的系统上遇到了同样的问题,但这是udev问题。没有/dev/tty
节点,所以我必须做:
mknod -m 666 /dev/tty c 5 0
如果您在办公室内部网(否则很危险),该内部网始终受防火墙保护,则在〜/ .ssh / config中仅包含以下几行
Host *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
对我有用的是首先添加新计算机的SSH密钥,我按照GitLab的这些说明进行操作-添加SSH密钥。请注意,由于我使用的是Win10,因此必须在Windows的Git Bash中执行所有这些命令(在常规的DOS cmd Shell中不起作用)。
然后再次在Git Bash中,我必须做一个git clone
我遇到问题的仓库,在我的情况下,我必须将其克隆为另一个名称,因为我已经在本地拥有它并且不想丢失我的提交。例如
git clone ssh://git@gitServerUrl/myRepo.git myRepo2
然后,我得到提示将其添加到已知主机列表,问题可能是这样的:
您确定要继续连接(是/否)吗?
我输入“是”,它终于起作用了,通常应该会收到类似以下的消息:
警告:将“ [您的回购链接]”(ECDSA)永久添加到已知主机列表中。
注意:如果您使用的是Windows,请确保对所有命令都使用Git Bash,但在常规的cmd shell或powershell中均无法使用,我确实必须在Git Bash中执行此操作。
最后,我删除了第二个克隆存储库(myRepo2
在示例中),然后回到我的第一个存储库,我终于可以像平常一样在我最喜欢的编辑器VSCode中完成所有Git任务。
如果您在Windows上使用git。
GUI客户端将您的密钥添加到~/.ssh/known_hosts
。如果您不经常这样做,则更容易记住,并且避免了使用git命令行的需要(标准Windows命令行没有ssh-keyscan
可执行文件。
这意味着您的远程主机密钥已更改(可能是主机密码更改),
您的终端建议以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
再试一次,希望这行得通。
在映像公开期间的构建期间,我在DockerFile中遇到了相同的错误。我在Dockerfile中没有做任何修改。
RUN git clone https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs
这是因为使用git@github.com:...语法最终>使用SSH进行克隆,并且在容器内,您的私钥不可用。您将改为使用RUN git clone> https://github.com/edenhill/librdkafka.git。
我遇到了类似的问题,不幸的是,我使用了GitExtensions HMI,却忘记了自己写的密码。使用HMI ....算了!生成密钥时,请勿输入密码!
ssh://