部署Gitea服务的那些坑

2024-01-12 02:12
文章标签 部署 服务 gitea

本文主要是介绍部署Gitea服务的那些坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标:在win10系统上部署Gitea服务,以ssh协议的方式访问。

首先要在win10系统上安装ssh服务,这里安装OpenSSH即可,PowerShell脚本如下(记住管理员运行):

# 打开 PowerShell 以管理员身份运行
# 添加 WindowsCapability - 在线安装 OpenSSH 服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0# 启动 sshd 服务
Start-Service sshd# 将 sshd 服务设置为开机启动
Set-Service -Name sshd -StartupType 'Automatic'# 测试连接,如果想要测试OpenSSH服务是否正常启动,使用下面命令进行测试连接
# ssh username@ip# 生成 SSH 密钥对
# ssh-keygen -t rsa

官网下载并安装Git

第一个坑:

OpenSSH所使用的默认shell为cmd,这会导致有些git命令面临如下问题:

fatal: protocol error: bad line length character: Micr

fatal: ''**/**/**.git'' does not appear to be a git repository(注,路径外并非双引号,而是两层单引号这是通过cmd作为shell执行git命令的问题,导致路径无法识别)

解决方案,修改OpenSSH的默认shell,PowerShell脚本如下:

$selected = Read-Host "设置为[1:cmd][2:PowerShell][3:GitBash]"
#设置为cmd
$shellPath = "C:\\Windows\\system32\\cmd.exe"
if($selected -eq "2")
{$shellPath = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
}
if($selected -eq "3")
{$shellPath = "C:\\Program Files\\Git\\bin\\bash.exe"
}New-ItemProperty -Path "HKLM:\\SOFTWARE\\OpenSSH" -Name DefaultShell -Value $shellPath -PropertyType String -Force
Read-Host "回车退出"

第二个坑:

路径问题,在使用Gitea创建完仓库之后,其生成出来的ssh路径并非绝对路径,而是直接指向了Gitea安装路径下的gitea-repositories文件夹下的路径,如下格式:

userName@host:user/RepoName.git

这就导致了一个问题,在用git命令clone或push向该sshUrl时,会找不到仓库,因为OpenSSH的默认寻址根路径是用户文件夹,也就是[~],想要从这个根路径找到仓库,必须使用绝对路径的方式。

解决方案,将Gitea下的指定仓库的绝对路径替换到上面的sshUrl中,变成:userName@host:D:/**/**/RepoName.git

第三个坑:

密钥验证问题,如果你在执行git命令时出现类似以下的提示,那么说明你可能面临安全验证方面的问题:

$ git push -u origin main
Administrator@192.168.1.195's password:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 199 bytes | 199.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Gitea: Rejecting changes as Gitea environment not set.
remote: If you are pushing over SSH you must push with a key managed by
remote: Gitea or set your environment appropriately.
To 192.168.1.195:D:/**/**.git! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to '192.168.1.195:D:/**/**.git'

实际上,我本地客户端已经生成了SSH的密钥对,也把公钥添加到Gitea中了,并且也配置了OpenSSH客户端的配置文件,设置好了访问Gitea时使用指定的私钥:

Host 192.168.1.195HostName 192.168.1.195Port 22User AdministratorIdentityFile ~/.ssh/id_rsa

但就是死活不好使,没办法,最后在国外网站的角落找到了解决方案:

修改Gitea的配置文件,在Gitea安装路径的这里:Gitea\custom\conf\app.ini

在配置文件的[security]节点下增加如下内容:

ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET=false

注:第二、三个问题找到了原因,在创建Gitea管理员时,我不应该使用当前的Admin账号(实际上在第一次配置Gitea时,[以用户名运行]这一项好像是无法修改,只能是默认当前的登录账号,不过可以在配置文件中手动修改),所以我在windows系统中创建了另外一个git账号,然后修改Gitea\custom\conf\app.ini配置文件中的如下内容为创建的git用户:

RUN_USER = git-user

然后用admin账号生成密钥对,将公钥放到git-user的.ssh文件夹中,并且在Gitea管理面板将公钥加入。

这样的话,使用Gitea面板上为你生成的sshUrl就没有问题了。

这篇关于部署Gitea服务的那些坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/596479

相关文章

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将