新手使用Git:git push origin master = "ssh_exchange_identifiction: Connection closed by remote host. Fatal: The remote end hung up unexpectedly"

4

我第一次尝试使用git,并试图按照github提供的说明进行操作。然而,我好像在最后一步失败了。以下是github提供的步骤:

Global setup:

  Download and install Git
  git config --global user.name "Your Name"
  git config --global user.email 


Next steps:

  mkdir SomeFolder
  cd SomeFolder
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:username/SomeFolder.git
  git push origin master

然而,在运行最终命令git push origin master时,我收到以下错误信息:

"ssh_exchange_identification:连接被远程主机关闭。fatal: 远程端意外挂起"

可能是什么原因导致的呢?

5个回答

7

GitHub是高度安全的,遵循ssh-rsa协议。因此,我们需要设置ssh公钥以进行连接,并让GitHub知道它。

打开终端并作为用户(不是root用户,通常我们习惯在终端中输入sudo su作为第一个命令,这次避免使用它) 输入:

ssh-keygen -t rsa -C "yourmailid@gmail.com"

这里, -t -> 指定加密方式 -C -> 尝试使用您在github上提供的相同邮件地址(方便记忆)
现在,您将获得两个文件 id_rsa 和 id_rsa.pub,它们位于 ~/.ssh/ 目录下。
现在,请复制 id_rsa.pub 文件中的全部内容,不要更改该文件的内容。
现在返回您的 Github 帐户。 进入帐户设置 >>> SSH 公钥 添加一个新的公钥,并将您复制的内容粘贴到 "key" 字段中,然后保存(可以自己命名)。
现在,Github 知道如何处理来自您系统的请求。
现在尝试。
$ssh git@github.com

这必须返回“嗨!用户名”,如果显示任何错误,请忽略,但确保它显示“嗨!用户名”

好的!现在我们要在我们的机器上设置仓库的本地副本,并反映远程系统中的更改

创建一个目录(作为用户,而不是root)

mkdir MyProject
cd MyProject

git init

在此处初始化一个空的git存储库,查看隐藏文件夹.git/。 在MyProjects中创建文件后,如果您想将其添加到Github上的存储库中,请执行以下操作:

git add

现在运行状态并检查您要提交的文件,接下来:
git status

git commit -m "Your comment about this commit"

(这会更新本地代码库中的.git/文件夹) 现在我们要告诉git需要更新的远程代码库

git remote add origin git@github.com:username/ProjectName

(你还记得我们从哪里获取了这个URL吗?它是你的克隆URL。)
git push origin master

希望这对你有用。


1

你是否使用ssh-add添加了你的RSA密钥?

ssh-add your-rsa-key


运行此命令,我得到了“无法打开与您的身份验证代理的连接。” - Chris
您必须运行ssh-agent才能使用ssh-add,但似乎这不是问题的原因,否则会产生不同的错误。 - Arjan

0

您机器上的SSH密钥与您在GitHub记录中的不匹配。请键入

cat ~/.ssh/id_rsa.pub | pbcopy

这将复制您的公钥到剪贴板。然后转到GitHub帐户设置并将其添加为新密钥。


那个命令好像对我没起作用。不过,我手动去了我的 .ssh.pub 文件,并将其复制/粘贴到了 Github 账户设置中。但还是不行。 - Chris
1
pbcopy 是仅适用于 Mac OS 的命令,你可以在 Linux 上使用 xclip -selection c 代替 pbcopy。 - Philipp Kewisch
谢谢,不确定为什么我会认为是Mac。 - Sophie Alpert

0
有时候,你可以通过再次运行 push 命令来重新初始化与 GitHub 的连接:
git push -u origin master

看起来已经成功了!


0

有时候你必须运行:

git pull

注意!在运行此命令之前,请备份您的存储库文件夹。


看起来提问者有一个全新的代码库,没有需要拉取的内容。 - slashingweapon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接