使用 nginx 和 openssh-server 設置 Gitea SSH
我剛剛設置了我的第一個本地 Gitea 伺服器,除了 SSH 之外一切正常。普通的 SSH 工作正常,但當我嘗試與 Gitea 互動時就不行了。
顯示的 URL
ssh://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 使用者,如果確實存在,則可能不一樣。(使用者住宅是範例,生產中可能會有所不同)