Nginx

使用 nginx 和 openssh-server 設置 Gitea SSH

  • September 2, 2019

我剛剛設置了我的第一個本地 Gitea 伺服器,除了 SSH 之外一切正常。普通的 SSH 工作正常,但當我嘗試與 Gitea 互動時就不行了。

顯示的 URLssh://git@gitea.xxx.local:123/user/hello-world.git **為什麼是“git@”?**我的使用者名不是“git”,但 Gitea 伺服器以使用者“git”執行。如果我將“git”更改為我的真實使用者名,我至少可以使用我的私人 SSH 密鑰成功進行身份驗證。如何修復該 URL 以顯示正確的使用者名?

但是,如果我嘗試git clone,我總是會得到fatal: '/user/hello-world.git' does not appear to be a git repository

這是我的gitea/app.ini文件:

[server]
ROOT_URL         = https://gitea.xxx.local/
DOMAIN           = gitea.xxx.local
HTTP_PORT        = 3000
SSH_DOMAIN       = gitea.xxx.local
SSH_PORT         = 123
DISABLE_SSH      = false

Gitea 僅在 localhost 上偵聽,我使用 nginx 作為反向代理:443:3000它適用於 web 但不適用於 SSH。

openssh-server 正在監聽:123,我可以在那裡成功地進行身份驗證。**如何將 SSH 連接轉發到內部 Gitea 伺服器?**也用nginx?

這是大多數 Git 伺服器的正常和預期行為,看看 GitLab 給你的 SSH 複製 URL,你會看到它也使用 git 使用者。

這是因為如果您的 git 伺服器以 git 使用者身份執行,它需要能夠訪問、查看、維護和最終刪除儲存庫中的文件。

當您通過 Gitea 界面添加 SSH 密鑰時,它將向沒有 SSH 權限(埠轉發、pty 等)的 git 使用者添加一個授權密鑰和一個強制命令,該命令將回調到 Gitea 以使其知道是什麼使用者它試圖訪問什麼儲存庫。然後它將決定如何處理它,是否授權它,並最終將資訊傳遞給 Git 以合併到儲存庫中。

編輯:解決no repository部分問題:再次,這是正常的和預期的,因為 git 儲存庫實際上位於 git 使用者的主文件夾中。因此,當您嘗試group/repo.git從擴展為絕對路徑的 git 使用者進行訪問時,/home/git/group/repo.git但如果您以 身份登錄user,則將擴展為/home/user/group/repo.git可能不存在的 git 使用者,如果確實存在,則可能不一樣。(使用者住宅是範例,生產中可能會有所不同)

引用自:https://serverfault.com/questions/981615