Gitea无法克隆问题求助:LXC容器部署后SSH克隆报错
解决Gitea SSH克隆时的"protocol error: bad line length character"问题
这个错误的核心原因是Git通过SSH连接时,没有收到Gitea SSH服务的预期响应,而是拿到了普通shell的输出(比如欢迎文本),导致解析失败。按以下步骤排查修复:
先测试SSH连接的实际输出
执行ssh git@240.162.0.163,如果返回类似"This is..."的文本(普通shell的欢迎信息),说明git用户登录后进入了普通shell,而非Gitea专用的git-shell,这就是问题根源。限制git用户的shell为git-shell
- 进入LXC容器,查看git用户当前的shell:
正常输出的shell字段应该是cat /etc/passwd | grep git/usr/bin/git-shell或者Gitea安装目录下的git-shell(比如/opt/gitea/bin/git-shell)。 - 如果当前是普通shell(如/bin/bash),执行命令修改:
注意:如果找不到usermod -s /usr/bin/git-shell git/usr/bin/git-shell,先确认Git是否完整安装,或者改用Gitea自带的git-shell路径。 - 确保git-shell在系统允许的shell列表中:
编辑/etc/shells,添加一行git-shell的路径(比如/usr/bin/git-shell),保存后再执行上述usermod命令。
- 进入LXC容器,查看git用户当前的shell:
验证Gitea SSH服务状态
检查Gitea服务是否正常运行:systemctl status gitea同时查看Gitea配置文件(通常是
/etc/gitea/app.ini)的[server]段,确认SSH_LISTEN_PORT和SSH_PORT配置正确,默认是22;如果容器做了端口映射,要确保外部访问的端口和容器内SSH服务端口一致,且未和宿主机SSH服务冲突。修正克隆命令(如果端口非默认)
如果Gitea SSH服务用的不是22端口,克隆命令必须使用ssh://格式指定端口,比如:git clone ssh://git@240.162.0.163:2222/theo/test-repo.git
内容的提问来源于stack exchange,提问作者Dirk
相关产品推荐
相关产品推荐

