git clone报Permission denied (publickey) 的错误

我之前好久没有使用git了 今天使用git从Bitbucket(类似于github的托管软件)clone项目时报错

复制代码
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added 'bitbucket.org' (ED25519) to the list of known hosts.
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

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

报错原因是原来git可以使用用户名和密码的方式进行验证,现在要使用密钥进行验证。

设置 SSH 密钥的步骤:

(1):在终端执行命令

复制代码
ssh-keygen -t rsa 

(2):选择生成的密钥保存的位置

系统会询问你保存新生成的SSH密钥的位置。你可以按回车键接受默认位置(通常在 ~/.ssh/id_rsa),或者输入一个新的文件路径来指定一个不同的保存位置。

(3):设置短语密码并确认这个密码

接下来,系统会提示你输入密码短语来保护私钥。你可以输入一个强密码短语,或者直接按回车键留空以不设置密码短语。如果你设置了一个密码短语,系统会要求你再次输入以确认。

(4):生成密钥以及查看生成的密钥

上述三个步骤完成后,在终端会输出公有密钥(Your public key)以及私有密钥(Your identification)。

(5):添加公有密钥到Bitbucked或gitHub

拓展:

Git 可以通过两种主要方式进行身份验证:

  1. 基于账户名和密码

    • 这种方式通常与 HTTPS 协议的远程仓库地址一起使用。当你使用 https 开头的 Git 仓库地址克隆、拉取(pull)、推送(push)代码时,系统会提示你输入用户名和密码。这可以是 Bitbucket、GitHub 或其他 Git 服务的账户凭据。
  2. 基于 SSH 密钥

    • 这种方式使用 SSH 协议,需要你设置 SSH 密钥对。SSH 密钥对包括一个私钥和一个公钥。私钥保留在你的本地计算机上,而公钥需要添加到你想要访问的 Git 服务账户中(例如 Bitbucket 或 GitHub)。
    • 当你使用 git@ 开头的 SSH 格式的仓库地址时,Git 客户端会使用本地的私钥与服务器上的公钥进行配对,如果配对成功,你将无需输入用户名和密码即可访问远程仓库。

使用 SSH 密钥的方式通常认为更安全,因为它们不需要在每次连接时输入密码。此外,SSH 密钥还可以配置密码短语(passphrase),为私钥提供额外的安全保护。

以下是使用 SSH 密钥进行 Git 操作的基本步骤:

  • 生成 SSH 密钥对。
  • 将公钥添加到你的 Git 服务账户(例如 Bitbucket 或 GitHub)。
  • 确保你的 Git 客户端配置为使用 SSH 密钥。
  • 使用 SSH 格式的仓库地址进行 Git 操作。
相关推荐
程序员阿鹏1 小时前
Git的安装和配置(idea中配置Git)
java·开发语言·ide·git·intellij-idea·idea
belldeep13 小时前
如何阅读、学习 Git 核心源代码 ?
git·学习·源代码
我不是秃头sheep14 小时前
Git安装教程及常用命令
git
sduwcgg1 天前
git经验
git
麻雀无能为力1 天前
git的使用
git
算法歌者1 天前
Visual Studio 项目 .gitignore 文件指南
git·visual studio
江边垂钓者1 天前
git cherry-pick和git stash命令详解
git
Lw老王要学习1 天前
Linux架构篇、第五章git2.49.0部署与使用
linux·运维·git·云计算·it
爱学习的张哥1 天前
专栏项目框架介绍
git·fpga开发·udp·ddr·gt收发器
Aric_Jones1 天前
lua入门语法,包含安装,注释,变量,循环等
java·开发语言·git·elasticsearch·junit·lua