1.问题背景
默认商店下载gitea,配置好mysql数据库,git clone失败,报错为:
git clone gitea@ip:user/test.git
正克隆到 'test'...
gitea@ip's password:
Permission denied, please try again.
gitea@ip's password:
Permission denied, please try again.
gitea@ip's password:
gitea@ip: Permission denied (publickey,password).
致命错误:无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
2.解决流程
2.1.配置ssh-key仍失败
首先疑惑全流程就没有配置过gitea的密码,输入密码全失败,很疑惑!
先去配置ssh-key仍然报相同错误
2.2.怀疑用户密码
相关文档比较匮乏,有一篇注意到有执行新增linux用户的操作,结合gitea注册页面的gitea用户名不能自定义修改,猜想git clone密码就是用户密码
// 初始密码为空,此处展示修改后的
user@zaiNas:/vol2/@appdata/Gitea$ sudo cat /etc/shadow | grep gitea
[sudo] password for user:
gitea:$6$GhOTO7g7sUoGKl.Z$eEX52wTWEBc3oJYF1vjcdYR7yuPageYzoRPEb7CcV8T**M3oGa.Vh9/9COeK91wzJFu6I2pIE/.SGT1aGT.J/:20067::::::
user@zaiNas:/vol2/@appdata/Gitea$ sudo cat /etc/passwd | grep gitea
gitea:x:974:901::/home/gitea:/bin/bash
开始发现gitea用户的密码为空,且设置为不可登陆,实际git clone输入密码是直接回车也失败,此处密码为空存疑
在重置密码后终于输入正确密码,报错:该用户并无对应文件夹
ssh -T gitea@ip
gitea@ip's password:
Linux zaiNas 6.6.38-trim #73 SMP PREEMPT_DYNAMIC Mon Dec 2 21:56:52 CST 2024 x86_64
Could not chdir to home directory /home/gitea: No such file or directory
This account is currently not available.
顺着此问题,为gitea创建对应的文件夹
// 方法1:确保gitea用户有正确主目录
sudo mkdir -p /home/gitea
sudo chown gitea:gitea /home/gitea
sudo chmod 700 /home/gitea
sudo usermod -d /home/gitea gitea
sudo usermod -s /bin/bash gitea
// 方法2:允许gitea用户登陆
sudo usermod -s /bin/bash gitea
3.端口22抢占
以上操作后,密码终于输入正确,但仍然不能clone仓库
git clone gitea@ip:user/test.git
正克隆到 'test'...
gitea@ip's password:
fatal: 'user/test.git' does not appear to be a git repository
致命错误:无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
此时结合之前gogs配置时切换22端口操作,猜想可能22端口被系统抢占了
// 查看22端口被sshd占用了
sudo lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1187 root 3u IPv4 11479 0t0 TCP *:ssh (LISTEN)
sshd 1187 root 4u IPv6 11481 0t0 TCP *:ssh (LISTEN)
sshd 8323 root 4u IPv4 65659 0t0 TCP ip:ssh->ip:52215 (ESTABLISHED)
sshd 8354 user 4u IPv4 65659 0t0 TCP ip:ssh->ip:52215 (ESTABLISHED)
于是寻求切换gitea到其他端口,开始尝试222端口
// 修改方法: gitea/config.ini
[server]
SSH_PORT = 222
START_SSH_SERVER = true
报错
// gitea log报错222端口不能无权限
2024/12/11 00:00:39 ...s/graceful/server.go:50:NewServer() [I] Starting new SSH server: tcp::222 on PID: 4827
2024/12/11 00:00:39 ...s/graceful/server.go:76:ListenAndServe() [E] Unable to GetListener: listen tcp :222: bind: permission denied
2024/12/11 00:00:39 .../ssh/ssh_graceful.go:25:listen() [F] Failed to start SSH server: listen tcp :222: bind: permission denied
// 1024以下的端口需要管理员权限绑定
讲端口修改为大于1024,正常运行
[server]
SSH_PORT = 7878 # 修改为大于 1024 的端口
START_SSH_SERVER = true