当前位置: 首页 > 知识库问答 >
问题:

无法使用ssh推送到gitlab上的分支

徐涵亮
2023-03-14

我是gitlab的新手,这是我第一次使用ssh。我可以生成ssh密钥并将其添加到我的帐户设置中。我可以通过ssh克隆repo,我可以签出到我的分支,但我仍然不能做的是将我的更改推送到分支。以下是我在尝试推送ssh密钥之前(按照此处的说明)生成ssh密钥的步骤:

PS.我正在使用Windows 10。

  • 在终端上(作为管理员),键入:ssh-keygen-o-t rsa-b 4096-C"myemail@example.com".
  • Enter获取ssh键的默认路径
  • 提供密码
  • ~/. ssh/中创建配置文件。这是我在配置文件中写的:

主机名Hostname主机名myhostname。com用户mygitlabusername端口首选身份验证公钥标识文件~/。ssh/id\u rsa

  • 使用以下命令复制ssh键:cat~/. ssh/id_rsa.pub|clip
  • 将ssh密钥放入我的帐户设置
  • 然后,运行ssh-Tgit@myhostname.com,结果如下:

无法建立主机“[myhostname.com]:端口([123.456.789]:端口)”的真实性。ECDSA密钥指纹是SHA256:xxxx。是否确实要继续连接(是/否)?是警告:将“[myhostname.com]:端口([ipofmyhost]:端口)”(ECDSA)永久添加到已知主机列表中。输入密钥“C:~/”的密码短语。ssh/id_rsa”:欢迎来到GitLab,

  • 然后我尝试克隆一个repo:git clone ssh://git@myhostname.com/repo.git
  • 但是,显然,克隆时,它指的是另一个IP地址。例如,假设ssh-T上的ipofmyhostgit@myhostname.com123.456.789。然后,当我克隆时,IP被更改为123.456.781(抱歉,恐怕我不能提到真正的IP)。所以,这是我在尝试克隆回购时得到的:

警告:将IP地址“[123.456.781]:端口”的ECDSA主机密钥永久添加到已知主机列表中。输入密钥“/c/”的密码短语。ssh/id\u rsa':

  • 但是,克隆完成后,我用git checkout mybranchname签出到我的分支机构

git@myhostname.com:权限被拒绝(公钥)。致命:无法从远程存储库读取。请确保您有正确的访问权限,并且存储库存在。

我错过了什么?我发现了这个问题,但很抱歉,我不明白接受的答案建议我如何解决这个问题。

使现代化

我试图再次重新克隆,但在此之前,我删除了所有已知的主机。然后,再次执行git克隆,而不使用ssh-T进行测试git@myhostname.com以避免创建新的IP地址。但是,即使没有新的ip地址添加到已知的\u主机,我在推送分支时仍然会遇到相同的错误。


共有1个答案

公冶浩慨
2023-03-14

再试一次,以进行测试,创建一个没有密码的SSH。

或者,首先,确保已使用ssh add将密钥添加到ssh代理
请参阅“使用非默认SSH密钥对路径”

您可以“在Git for Windows上自动启动ssh代理”(GitHub说明,但对GitLab也有效)

 类似资料:
  • 我目前正在开发Quarkus应用程序,因此需要一个CI管道容器注册表。 由于通过docker的集装箱化不起作用(docker daemon-priviliged模式),我想使用Jib,Quarkus已经支持它。 正在处理的命令: 用户名=部署令牌用户名 密码=部署令牌 部署令牌拥有所有权限,所以这不应该是问题所在。 我还尝试了在注册表url中添加令牌的命令的不同变体: https://userna

  • 我从Bitbucket或Github迁移了我的回购协议。我认为这无关紧要,但这是唯一不同的地方。有一段时间,我安装了两个遥控器: 然后我将两者都删除,并将原点指向github: 开发分公司测试推送: 一切都是最新的,好的,很好。 按照常规为某些工作创建新分支: 更新一两个文件。尝试推送至远程: 这会导致错误: 致命:无法将功能/名称解析为分支 在线搜索此问题,找到一些关于确保HEAD正确的信息,其

  • 我生成了一个没有密码的SSH密钥对,并将公钥添加到GitHub。 连接 成功,但当我重命名密钥时,它失败了。 但是当我想推送我的更改时,它仍然会询问我的用户名和密码组合。 有没有办法在没有密码的情况下推送?

  • 当我做一个,我得到我的分支: 当我尝试推送git时,我得到: 当我检查分支时,它不在那里: 我该如何解决这个问题?

  • 首先,我对Github操作还很陌生。 我试图使用Github操作自动将我的回购推到带有访问令牌的Gitlab。但是,我总是得到错误 我尝试了GitLab Remote:HTTP Basic:Access denied and fatal Authentication,中的解决方案,但如果我将该行放在.yml中,它将中断并返回错误代码5。如果我不放那一行,我会得到上面描述的错误。 带有尝试历史记录的

  • 我没有掌握整个Docker Hub/Registry的原理。我知道我可以运行私有注册表,但为此我必须建立实际运行服务器的基础结构。 我偷偷地看了看Docker的内部工作(嗯,至少是文件系统),看起来Docker图像层只是一堆tarball,或多或少带有一些复杂的文件命名。我天真地认为,开发一个简单的Python脚本来执行分布式推/拉操作并不是不可能的,但我当然没有尝试过,所以这就是我提出这个问题的