目录
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 文件,为此又研究了一下,这些使用频率不高,又非常重要的设置最让人抓狂,因此对这次的设置过程进行记录,以备后用。
一、 核心步骤说明
- 生成SSH密钥对
- 将公钥添加到Gitea的用户SSH密钥中
- 将私钥文件路径配置到 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)】。
2. 添加新的 SSH 公钥
- 点击 【添加密钥(Add Key)】
- 在 【密钥内容(Key Content)】 栏粘贴刚才复制的公钥文本
- Gitea会自动根据密钥内容提取出名称。
- 点击 【添加密钥】 完成配置。
- 使用RSA密钥,如果长度不大于3071字节会报错。建议使用 ed25519
- 第一步BASH指令生成的就是ed25519密钥。
三、在 SourceTree 中使用新的 PPK 文件
1. 确认SourceTree远程库
-
打开 SourceTree
-
打开对应的本地库,点击菜单【仓库】→【仓库设置】
-
在弹出的远程仓库窗口中,确认仓库使用的是 SSH 地址
-
如下图,仓库有两种链接方式,HTTPS方式和SSH方式
- SSH链接如
gitea@git.XXX.com:ORG/YYY.git
- HTTPS链接如
https://git.XXX.com/ORG/YYY.git
- SSH链接如
2. 设置SSH客户端配置
- 菜单【工具】→【选项】→【SSH 客户端配置】
- 选择第一步生成的私钥文件
- SSH客户端,一定要选择 OpenSSH,否则无法用密钥
四、注意规避的坑
- PuTTYgen 生成的RSA密钥,默认长度为2048,无法添加到 gitea 中
- 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
- SourceTree 仓库路径设置,一定要勾选【默认远端】