本文描述的是在windows系统上配置免密git push
至Gogs
仓库和Gthub
仓库
之前也弄过类似操作,但是由于那次重装系统给干没了
Gogs为本地使用,设计为不联网
Github为在线使用,同时使用的还有Github Pages的博客更新
前提
- 本机中已有Github的免密配置,也就是在Github上传了公钥,不变更这部分内容
- Github配置的是全局用户,不变更这部分内容,新增的Gogs使用local user进行配置
- 尽量保持不改动Github部分的配置
生成用于Gogs的密钥对
在任意目录下启动git bash 窗口(gogs@gogs.net
邮箱地址为Gogs上的用户邮箱,不是实际互联网上存在的)
$ ssh-keygen -t ed25519 -C "gogs@gogs.net"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/xxx/.ssh/id_ed25519): gogs_id_ed25519
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in gogs_id_ed25519
Your public key has been saved in gogs_id_ed25519.pub
The key fingerprint is:
……
密钥对拷贝至.ssh目录
由于在创建ssh-key时没有指定保存到.ssh目录,所以手动复制到该目录(C:\Users\xxx\ .ssh)
也可以在稍后创建的config文件中指定密钥对的路径,但是不妥,还是放在统一的目录
创建config文件
- 资源管理器打开目录
C:\Users\xxx\.ssh
,创建一个config文件(注意没有后缀) - gogs_id_ed25519为前面步骤中创建的密钥对名称
- id_ed25519为我正在使用的github密钥对名称
注意:gogs使用的是root用户,因为当初没有创建git用户(如果你创建了git用户,则使用git)
# gogs
Host 172.31.100.225
HostName 172.31.100.225
PreferredAuthentications publickey
IdentityFile C:/Users/xxx/.ssh/gogs_id_ed25519
User root
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:/Users/xxx/.ssh/id_ed25519
User git
上传ssh公钥和测试
登陆Gogs,头像–用户设置–SSH 密钥–增加密钥
记事本打开gogs_id_ed25519.pub,复制内容粘贴至密钥内容,填写一个密钥名称,点击增加密钥
测试
# Gogs测试 $ ssh -T root@172.31.100.225 Hi there, You've successfully authenticated, but Gogs does not provide shell access. If this is unexpected, please log in with password and setup Gogs under another user. # Github测试 $ ssh -T git@github.com Hi kiraster! You've successfully authenticated, but GitHub does not provide shell access.
git配置和初始化(懂的跳过)
- 为了演示操作,需要在Gogs创建一个仓库
在本地创建一个目录test
打开创建的test目录
右键git bash here打开窗口,执行git初始化命令和配置local user
git init # 使用local配置用户,配置的local user仅对当前本地仓库起作用 # gogs@gogs.net邮箱地址为Gogs上的用户邮箱,不是实际互联网上存在的 git config --local user.name "gogs" git config --local user.email "gogs@gogs.net"
$ git init Initialized empty Git repository in D:/test/.git/ $ git config --local user.name "gogs" $ git config --local user.email "gogs@gogs.net"
修改remote仓库地址(由于当时省事没有修改domian)
git remote add origin root@172.31.100.225:gogs/test.git
执行剩下命令
touch README.md git add README.md git commit -m "first commit" git push -u origin master
$ touch README.md $ git add README.md $ git commit -m "first commit" [master (root-commit) 6b281e3] first commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.md $ git push -u origin master Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 200 bytes | 200.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To 172.31.100.225:gogs/test.git * [new branch] master -> master Branch 'master' set up to track remote branch 'master' from 'origin'.
Gogs上查看