boo*_*tsz 174 git ssh ssh-keys
我正在尝试连接到驻留在我的Web服务器上的远程Git存储库并将其克隆到我的机器上.
我使用以下格式的命令:
git clone ssh://username@domain.com/repository.git
Run Code Online (Sandbox Code Playgroud)
这对我的大多数团队成员来说都很好.通常在运行此命令后,Git会提示输入用户的密码,然后运行克隆.但是,当在我的一台机器上运行时,我收到以下错误:
主机密钥验证失败.
致命:无法从远程存储库读取.
我们没有使用SSH密钥连接到这个存储库,所以我不确定为什么Git会在这台特定的机器上检查一个.
小智 273
正如我先前在克隆中回答的那样,git repo导致错误 - 主机密钥验证失败.致命:远程端意外挂断,将GitHub添加到授权主机列表中:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
Gre*_*con 114
您正在通过SSH协议进行连接.使用SSH,每个主机都有一个密钥.客户端记住与特定地址关联的主机密钥,如果主机密钥似乎发生更改,则拒绝连接.这可以防止人在中间发作.
domain.com的主机密钥已更改.如果这对您来说似乎不合适,您可以使用从本地缓存中删除旧密钥
ssh-keygen -R domain.com
Run Code Online (Sandbox Code Playgroud)
我强烈建议您考虑让用户使用密钥进行身份验证.这样,ssh://
可以存储密钥材料以方便使用(而不是每个人都必须为服务器的每个连接输入密码),并且密码不会通过网络传输.
Sar*_*ran 40
我有类似的问题,但是,使用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"
Pow*_*ham 31
发生这种情况是因为github目前不在您的已知主机中.
系统将提示您将github添加到已知主机.如果没有发生这种情况,您可以ssh -T git@github.com
再次运行以接收提示.
Muh*_*kur 23
当终端显示:
Are you sure you want to continue connecting (yes/no)?
不要我重复一遍,不要直接按下Enter
。
您必须首先在终端中输入 ,然后按。yes
Enter
Cod*_*ice 12
对我来说,我只需要在提示符下键入"是",询问"你确定要继续连接(是/否)?" 而不是只按Enter键.
我在新安装的系统上遇到了同样的问题,但这是一个udev问题.没有/dev/tty
节点,所以我必须这样做:
mknod -m 666 /dev/tty c 5 0
Run Code Online (Sandbox Code Playgroud)
小智 7
当被问到:
Are you sure you want to continue connecting (yes/no)?
输入yes作为响应
这就是我如何解决我的问题。但是,如果您尝试只按回车键,则行不通!
如果您在办公室Intranet(否则是危险的)总是受防火墙保护,只需在〜/ .ssh/config中包含以下行
Host*
StrictHostKeyChecking no
UserKnownHostsFile =/dev/null
对我有用的是首先添加我的新计算机的 SSH 密钥,我按照GitLab 中的这些说明进行操作- add SSH key。请注意,由于我使用的是 Win10,因此我必须在 Windows 上的 Git Bash 中执行所有这些命令(它在常规 DOS cmd Shell 中不起作用)。
然后再次在 Git Bash 中,我不得不做一个git clone
我遇到问题的 repo,在我的情况下,我不得不将它克隆到不同的名称,因为我已经在本地拥有它并且不想丢失我的提交。例如
git clone ssh://git@gitServerUrl/myRepo.git myRepo2
Run Code Online (Sandbox Code Playgroud)
然后我得到了将它添加到已知主机列表的提示,问题可能是这个:
您确定要继续连接吗(是/否)?
我输入了“是”,它终于奏效了,您通常应该会收到类似于以下内容的消息:
警告:将“[your repo link]”(ECDSA)永久添加到已知主机列表中。
注意:如果您使用的是 Windows,请确保对所有命令都使用 Git Bash,这在常规 cmd shell 或 powershell 中不起作用,我真的必须在 Git Bash 中执行此操作。
最后,我删除了第二个克隆存储库(myRepo2
在示例中)并返回到我的第一个存储库,我终于可以在我最喜欢的编辑器 VSCode 中像往常一样执行所有 Git 操作。
当远程服务器想要连接到私有存储库时,它将通过 ssh 进行身份验证。使用 ssh-keygen 创建私钥-公钥对,或者如果您已经拥有公钥-私钥,则创建私钥-公钥对。将公钥复制并粘贴到私人存储库的“设置”中。
YourPrivateRepo -> 设置 -> 部署密钥 -> 添加部署密钥 -> 粘贴公钥。
现在远程服务器将能够连接到私人存储库。
注意:部署密钥只能读取存储库。需要明确允许写访问。
如果您使用 Windows 版 git。
GUI 客户端将您的密钥添加到~/.ssh/known_hosts
. 如果您不经常这样做的话,这会更容易记住,并且还可以避免使用 git 命令行(标准 Windows 命令行没有ssh-keyscan
可执行文件)。