Android Studio处理Github代码遇到的多个SSH Key问题

    准备在Github上创建一个新的仓库,用来记录平时的代码等相关积累。

    通过查阅资料,使用Android Studio创建了一个新的仓库,但是在提交代码的时候,出现了如下错误:

22:53:28.874:  git -c core.quotepath=false push --progress --porcelain origin refs/heads/master:master --set-upstream
java.io.IOException: There was a problem while connecting to github.com:22
	at com.trilead.ssh2.Connection.connect(Connection.java:791)
	at com.trilead.ssh2.Connection.connect(Connection.java:577)
	at org.jetbrains.git4idea.ssh.SSHMain.start(SSHMain.java:172)
	at org.jetbrains.git4idea.ssh.SSHMain.main(SSHMain.java:138)
Caused by: java.io.IOException: Key exchange was not finished, connection is closed.
	at com.trilead.ssh2.transport.KexManager.getOrWaitForConnectionInfo(KexManager.java:92)
	at com.trilead.ssh2.transport.TransportManager.getConnectionInfo(TransportManager.java:230)
	at com.trilead.ssh2.Connection.connect(Connection.java:743)
	... 3 more
Caused by: java.io.IOException: Cannot negotiate, proposals do not match.
	at com.trilead.ssh2.transport.KexManager.handleMessage(KexManager.java:413)
	at com.trilead.ssh2.transport.TransportManager.receiveLoop(TransportManager.java:754)
	at com.trilead.ssh2.transport.TransportManager$1.run(TransportManager.java:469)
	at java.lang.Thread.run(Thread.java:745)
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

    通过经验推断,跟SSH鉴权失败有关,同时,发现在Android studio的偏好设置中的Git选项内,勾选了SSH选项,如下:


这时,考虑将在GitHub上来添加SSH Key。进入GitHub->Settings,如下:


这时,可以找到添加入口。由于电脑本地已经配置过一个ssh key,使用的是公司项目的账号与邮箱,为了避免混淆,需要重新生成一个Key。ssh-keygen的指令不需要赘述,但是要注意,在创建的时候,需要重新命名你的新key的存储文件名,不能使用默认的,因为如果原来的key使用的默认的文件名(id_rsa),则会覆盖。


我给单独的github的key文件单独增加了一个后缀,用以区别默认的key文件名。接下来,需要将该key添加到ssh-agent中,使用ssh-add命令。


OK,到此已经重新创建了一个GitHub的SSH Key。那么将此key添加到GitHub账号设置页面中去,按照页面入口即可完成。重新Push代码后发现,错误依旧。考虑到目前同时存在两个Key,这里参考了一篇博客:点击打开链接,讲解了如何处理多个SSH Key对应不同Git主机的情况。在.ssh路径下,如果没有就创建一个名为config的文件,单独给GitHub的SSH来配置,如下:


HostName是对应的主机名,User是主机用户名,而Github仓库路径-ssh://git@github.com:username/XXX.git中前面的git@github.com可以被替换成Host所表示的名字,所以Host名字自定义。

保存config文件并退出。继续在Studio上尝试Push,发现推送成功!另外注意,所有本地Git仓库中的git config对应的user.name和user.email不要配置成全局的,不然会产生影响,导致所有仓库都乱套。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值