macbook m1 连接gerrit ssh 拉去代码不成功

发布时间 2023-10-30 16:52:12作者: Tarzen

记录一下,折腾了一早上~

mac系统:macOS Sonoma 14.0

openssh:9.3

问题描述:

拉代码:

git clone "ssh://XXXX/"

报错了:

Cloning into 'autotest'...
fanjiexiong@10.0.10.208: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

解决办法:

先看一下关于SSH的知识:

设置 SSH 时,需要生成新的 SSH 私钥并将其添加到 SSH 代理中。 使用密钥进行身份验证或对提交进行签名之前,还必须将 SSH 公钥添加到 GitHub 上的帐户中

Mac OS 生成密钥和公钥:

ssh-keygen -t ed25519 -C "your_email@example.com"

执行此命令后,你将被提示选择密钥文件的保存位置和设置可选的密码。生成的密钥对将包括一个私钥文件(通常在 ~/.ssh/id_ed25519)和一个关联的公钥文件(通常在 ~/.ssh/id_ed25519.pub

  • ssh-keygen 是一个用于生成、管理和操作 SSH 密钥对的命令行工具。
  • -t 选项用于指定要生成的密钥的类型。在这种情况下,-t ed25519 指定生成的密钥类型为 Ed25519。Ed25519 是一种公钥/私钥对的加密算法,它提供了高度的安全性和性能。
  • ed25519 是指定的密钥算法,它基于椭圆曲线密码学,并用于 SSH 密钥对的生成。这是一种现代的、高度安全的密钥算法,通常用于替代传统的 RSA 或 DSA 密钥。

将新生成的密钥添加到ssh代理中:

ssh-add ~/.ssh/id_ed25519

ssh-agent是后台运行的程序,它将密钥加载到内存中,因此您不需要每次使用密钥时都输入密码。 最妙的是,你可以选择让服务器访问你的本地 ssh-agent,就像它们已经在服务器上运行一样。 这有点像要求朋友输入他们的密码,以便您可以使用他们的计算机

将新生成的公钥添加到github、gitlad中:

cat ~/.ssh/id_ed25519.pub

这个公钥很短,不要怀疑你粘贴错了,在web页面添加进去就好了

测试ssh连接:

ssh -T git@github.com 因为我们部署在内网也没有域名,所有就是用户名+内网ip

ssh -T tarzan@10.0.0.1
返回: **** Welcome to Gerrit Code Review ****
就成功了

原文:https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent