You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

    1. 进入LXC容器,查看git用户当前的shell:
      cat /etc/passwd | grep git
      
      正常输出的shell字段应该是/usr/bin/git-shell或者Gitea安装目录下的git-shell(比如/opt/gitea/bin/git-shell)。
    2. 如果当前是普通shell(如/bin/bash),执行命令修改:
      usermod -s /usr/bin/git-shell git
      
      注意:如果找不到/usr/bin/git-shell,先确认Git是否完整安装,或者改用Gitea自带的git-shell路径。
    3. 确保git-shell在系统允许的shell列表中:
      编辑/etc/shells,添加一行git-shell的路径(比如/usr/bin/git-shell),保存后再执行上述usermod命令。
  • 验证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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:55:31