git的SSH配置
3.6、SSH配置
在 Gitea 中配置 SSH 密钥是为了让你在与 Gitea 进行 Git 操作(如克隆、拉取、推送)时,能够使用 SSH 协议进行身份验证,而不需要每次输入用户名和密码。以下是详细的 SSH 密钥配置过程:
3.6.1、生成 SSH 密钥对
在进行 SSH 配置之前,你需要先生成一对 SSH 密钥。这个过程需要在你的本地机器上完成。
3.6.1.1、生成 SSH 密钥(Linux/macOS)
在 Linux 或 macOS 上,打开终端并执行以下命令来生成 SSH 密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa:指定使用 RSA 算法。-b 4096:指定密钥长度为 4096 位,增加安全性。-C "your_email@example.com":给密钥添加一个注释(通常使用电子邮件地址)。
执行后,系统会提示你输入密钥文件的保存位置。通常可以直接按 Enter,将密钥保存在默认位置 ~/.ssh/id_rsa。
系统会要求你输入密码(可选)。如果不想设置密码,可以直接按 Enter。
3.6.1.2、生成 SSH 密钥(Windows)
在 Windows 上,你可以使用 Git Bash 或者 PuTTYgen 来生成 SSH 密钥。
使用 Git Bash: 打开 Git Bash 并执行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
3.6.2、添加 SSH 密钥到 SSH Agent
为了方便管理,你可以将 SSH 私钥添加到本地的 SSH 代理(ssh-agent)中,这样你就不需要每次都输入密码。
2.1 启动 SSH Agent(Linux/macOS)
在终端中运行以下命令:
eval "$(ssh-agent -s)"
3.6.2.2、将 SSH 私钥添加到 SSH Agent
然后将私钥添加到 SSH 代理中:
ssh-add ~/.ssh/id_rsa
如果你设置了密钥密码,系统会要求你输入密码。
3.6.3、复制公钥
现在你需要将生成的 公钥(id_rsa.pub)复制到 Gitea。
3.6.3.1、查看公钥内容
你可以使用以下命令查看公钥内容:
cat ~/.ssh/id_rsa.pub
该命令会输出类似下面的内容:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtNXi7xHpc0gkEkc9+4w1d0m29HZw2F5ss... your_email@example.com
3.6.4、在 Gitea 中添加 SSH 公钥
3.6.4.1、登录到 Gitea
- 打开 Gitea Web 界面,并使用你的管理员账号登录。
- 点击右上角的 头像,然后选择 Settings(设置)。
3.6.4.2、添加 SSH 密钥
- 在左侧导航栏中,点击 SSH Keys。
- 在页面中,点击 Add Key 按钮。
3.6.4.3、填写公钥信息
- 在弹出的窗口中,给密钥命名(例如:
My Laptop)。 - 在 Key 字段中粘贴你之前复制的公钥内容(即
id_rsa.pub文件的内容)。 - 点击 Add Key。
完成后,你的 SSH 密钥就添加到 Gitea 账户中了。
3.6.5、配置 Git 使用 SSH
现在你已经在 Gitea 上配置了 SSH 密钥,接下来配置本地 Git 使用 SSH 进行操作。
3.6.5.1、设置 Git 配置
确保 Git 使用与你 Gitea 账户相对应的用户名和电子邮件。可以使用以下命令进行配置:
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
3.6.5.2、克隆仓库
使用 SSH 协议克隆你的 Gitea 仓库。例如,假设你的仓库 URL 是 git@your_gitea_host:username/test.git:
git clone git@your_gitea_host:username/test.git
这时 Git 会使用 SSH 密钥进行身份验证,而不是要求你输入用户名和密码。
3.6.5.3、推送代码
在本地代码仓库中进行更改并提交后,使用以下命令推送代码到 Gitea:
git push origin master
Git 会使用 SSH 密钥进行身份验证,而无需每次输入用户名和密码。
3.6.6、验证 SSH 连接
如果你想确认 Gitea 是否能够正确识别你的 SSH 密钥,可以使用以下命令来测试 SSH 连接:
ssh -T git@your_gitea_host
# 如果不是默认端口需要明确指定
ssh -i ~/.ssh/id_rsa -p 23 git@x.x.x.x
成功的话,你会看到类似以下的输出:
Hi username! You've successfully authenticated, but Gitea does not provide shell access.
这表明你的 SSH 密钥配置正确,Gitea 已经识别了你。
3.6.7、常见问题排查
- 错误:Permission denied (publickey).
- 确保 Gitea 上的公钥与本地的公钥匹配。
- 确保私钥被正确添加到 SSH Agent。
- 检查
.ssh目录和id_rsa文件的权限:chmod 700 ~/.ssh和chmod 600 ~/.ssh/id_rsa。
- SSH 密钥未生效:
- 确保在 Gitea 上添加了正确的公钥,并且没有任何空格或换行错误。
- 确保本地 Git 配置了正确的用户名和邮箱。
更多推荐



所有评论(0)