Jason-Yuan

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理



Sourcetree 连接到 Gitea 服务器

   用了很久的SourceTree忽然无法推送代码到远程服务器了,提示信息如下:

git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags --set-upstream origin master:master
remote: Verify
fatal: Authentication failed for 'https://git.XXX.com/ORG/YYY.git/'
Pushing to https://git.XXX.com/ORG/YYY.git
完成时带有错误,见上文。

   其实就是登录不了 https://git.XXX.com 服务器了,最后发现是整理硬盘时时,将与 Gitea 相关的 PPK 文件(SSH的私钥文件)给删除了,导致登录问题。

   要想正常推送文件,需要重新生成 PPK 文件,为此又研究了一下,这些使用频率不高,又非常重要的设置最让人抓狂,因此对这次的设置过程进行记录,以备后用。

一、 核心步骤说明

  1. 生成SSH密钥对
  2. 将公钥添加到Gitea的用户SSH密钥中
  3. 将私钥文件路径配置到 SourceTree

二、 生成SSH密钥对

  生成密钥对有三种途径,BASH命令的方式最为直接有效。

  • 自行使用 PuTTYgen 生成密钥对,尝试多次无法正常
  • 使用SourceTree【工具】→【启动SSH助手】,可直接调出内置的PuTTYgen,同样尝试多次无法正常
  • 使用 git 命令行生成密钥对, 很方便,直接成功

   在Git Bash下运行如下命令

    $ ssh-keygen -t ed25519 -C "your_email@example.com"   
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/c/Users/your_name/.ssh/id_ed25519): 
    # 输入要存储的文件名,建议直接输入全路径,如 D:\gitea_SSH.ppk
    # 否则可能会存放到你的项目代码目录下。
    # 会生成两个文件,一个私钥文件如给出的文件名,公钥文件在后面加 .pub 后缀

   生成成功后,将文件转移到自己要使用的地方,并打开公钥文件,将内容复制到剪切板。

二、将公钥添加到Gitea的用户SSH密钥中

1. 登录 Gitea 网页端,进入个人设置

  • 访问你的 Gitea 仓库地址(如https://git.XXX.com),用账号密码登录。
  • 点击右上角头像 → 【设置(Settings)】 → 左侧菜单 【SSH/GPG 密钥(SSH / GPG Keys)】。

alt text

2. 添加新的 SSH 公钥

  • 点击 【添加密钥(Add Key)】
  • 在 【密钥内容(Key Content)】 栏粘贴刚才复制的公钥文本
  • Gitea会自动根据密钥内容提取出名称。
  • 点击 【添加密钥】 完成配置。
  • 使用RSA密钥,如果长度不大于3071字节会报错。建议使用 ed25519
  • 第一步BASH指令生成的就是ed25519密钥。

alt text

三、在 SourceTree 中使用新的 PPK 文件

1. 确认SourceTree远程库

  • 打开 SourceTree

  • 打开对应的本地库,点击菜单【仓库】→【仓库设置】

  • 在弹出的远程仓库窗口中,确认仓库使用的是 SSH 地址

  • 如下图,仓库有两种链接方式,HTTPS方式和SSH方式

    • SSH链接如 gitea@git.XXX.com:ORG/YYY.git
    • HTTPS链接如 https://git.XXX.com/ORG/YYY.git

    alt text

2. 设置SSH客户端配置

  • 菜单【工具】→【选项】→【SSH 客户端配置】
  • 选择第一步生成的私钥文件
  • SSH客户端,一定要选择 OpenSSH,否则无法用密钥

alt text

四、注意规避的坑

  1. PuTTYgen 生成的RSA密钥,默认长度为2048,无法添加到 gitea 中
  2. PuTTYgen 生成正常的密钥,配置添加都成功,但在处理推送时提示按 y 键确认,但实际上无法输入,
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags --set-upstream origin master:master
Pushing to gitea@git.XXX.com:ORG/YYY.git
The host key is not cached for this server:
  git.XXX.com (port 22)
You have no guarantee that the server is the computer
you think it is.
The server's ssh-ed25519 key fingerprint is:
  ssh-ed25519 255 SHA256:YZdx8DgD5FGYWHP/XkIP9NGfUuwFqJMwLw6iqhNLsCY
If you trust this host, enter "y" to add the key to
  1. SourceTree 仓库路径设置,一定要勾选【默认远端】

alt text

posted on 2025-08-17 01:14  12yuan  阅读(117)  评论(0)    收藏  举报