默认情况下,想要启用Gitea的SSH代码拉取,必须要修改SSH端口或者禁用主机上的SSH。若想要直接使用宿主机上的SSHD,需要进行一些配置。
假设Gitea在容器中运行,非容器可作为参考。
- 在宿主机上创建
git用户 - 将
/home/git/.ssh映射到容器中Gitea写入.ssh的位置,一般是/home/git/.ssh,可以通过Gitea app.ini的SSH_ROOT_PATH配置(配置此项请参考Gitea文档的Config Cheatsheet)。 - 将Gitea的SSH端口映射到宿主机上使其可以访问,例如
22222,然后尝试通过ssh [email protected] -p22222访问,应当收到鉴权失败之类的消息,而不是无法访问。 - 尝试在Gitea中添加一些密钥,检查宿主机目录中的
/home/git/.ssh/authorized_keys中是否有内容,找到要执行的命令是什么,即command=后的内容,一般是/usr/local/bin/gitea ...。 在宿主机上同样的位置创建一个转发用的脚本并赋予执行权限,将SSH命令转发到容器中。
#!/bin/bash ssh -p 22222 -o StrictHostKeyChecking=no [email protected] "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"- 测试拉取推送代码