一、使用非特权端口(推荐)
1. 修改 Gogs 配置文件
sudo nano /home/git/gogs/custom/conf/app.ini找到
[server]
部分,修改为:[server] START_SSH_SERVER = true SSH_PORT = 2222 # 改为1024以上的端口2. 重启 Gogs
sudo systemctl restart gogs
二、清除 SSH 缓存
如果之前尝试过连接,清除缓存:
ssh-keygen -R 192.168.28.130:2222
三、检查并生成 SSH 密钥(如果没有密钥)
检查是否存在 SSH 密钥:
ls ~/.ssh/id_*
如果没有任何
id_rsa
文件,需要生成新密钥:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
检查密钥权限,确保私钥权限正确(仅当前用户可读):
chmod 600 /c/Users/51675/AppData/Roaming/SPB_Data/.ssh/id_rsa chmod 644 /c/Users/51675/AppData/Roaming/SPB_Data/.ssh/id_rsa.pub
四、 将公钥添加到 Git 服务器
复制公钥
cat ~/.ssh/id_rsa.pub
登录 Git 服务器(如 Gogs),在 SSH Keys 设置中添加该公钥 。
五、修改客户端的 SSH 配置(永久生效)
编辑 ~/.ssh/config
:
nano /c/Users/51675/AppData/Roaming/SPB_Data/.ssh/config
添加以下内容:
Host 192.168.28.130
HostName 192.168.28.130
Port 2222
User git
IdentityFile /c/Users/51675/AppData/Roaming/SPB_Data/.ssh/id_rsa
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
逐行解析
1.
Host 192.168.28.130
作用:定义配置块的开始,指定该配置仅对
192.168.28.130
生效。注意:
Host
后的名称可自定义(如mygit
),实际连接时会根据HostName
解析。2.
HostName 192.168.28.130
作用:指定服务器的真实 IP 地址或域名。
为什么需要:当
Host
使用别名时,此处需填写实际地址。3.
Port 2222
作用:指定 SSH 连接端口为
2222
(默认是22
)。适用场景:Git 服务器(如 Gogs)常使用非标准端口。
4.
User git
作用:以
git
用户身份登录服务器。为什么是
git
:Git 服务通常创建专用系统用户git
管理仓库。5.
IdentityFile /c/Users/51675/AppData/Roaming/SPB_Data/.ssh/id_rsa
作用:指定用于认证的私钥文件路径。
关键点:
路径需为绝对路径(Windows 下使用
/c/
替代C:\
)。确保私钥权限为
600
(命令:chmod 600 /path/to/id_rsa
)。6.
HostKeyAlgorithms +ssh-rsa
作用:允许客户端接受服务器的
ssh-rsa
类型主机密钥。背景:
OpenSSH 8.8+ 默认禁用
ssh-rsa
(认为不够安全)。旧版 Git 服务器可能仅支持
ssh-rsa
,需手动启用。7.
PubkeyAcceptedAlgorithms +ssh-rsa
作用:允许客户端使用
ssh-rsa
类型的公钥进行认证。与
HostKeyAlgorithms
的区别:
HostKeyAlgorithms
:控制客户端如何验证服务器身份。
PubkeyAcceptedAlgorithms
:控制客户端如何向服务器证明自己。
六、使用SSH clone
保存后,后续可直接使用:
git clone git@192.168.28.130:root/project2.git
七、辅助说明
文件/命令 | 作用 |
---|---|
~/.ssh/known_hosts |
存储已验证过的主机密钥 |
~/.ssh/id_rsa |
默认私钥文件 |
~/.ssh/config |
SSH 客户端配置 |