-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LFS pull fails on public SSH-cloned repo #5478
Comments
I have the same problem. |
Closing as duplicate of #2475 |
I think this is not the same as #2475. The problem is that using git-lfs-authenticate will get the correct response in the private repository. In the public repository, but its own gitea's |
@cnzgray my understanding of this issue is that LFS fails when trying to clone via SSH, because LFS isn't supported under SSH per linked issue. So I think that the linked issue should be solved first because then this issue might not even exist. @flashka07 is free to open this issue again, and if so I will relabel it as bug |
@techknowlogick You are right, the essence of the problem is the transmission of LFS under SSH. However, for LFS related issues under SSH, there is still no complete point in time. The current gitea support for git-lfs-authenticate is correct (git clone uses ssh, LFS uses http), there is only one bug. When the gitea site is set to be authorized to access, the token of the public repository in the site cannot be correctly identified. thank you very much. |
That sounds reasonable, thank you for taking the time to explain. I will re-open. |
@cnzgray exactly, thank you. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 weeks. Thank you for your contributions. |
Can not reproduce this. Is this still a problem? |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs during the next 2 weeks. Thank you for your contributions. |
this is still relevant, i could not clone with ssh but once LFS was disabled it bypassed the error edit: but pushing doesn't work with this workaround |
@laerus could you very quickly give me a minimal test case for this. (I appreciate you can't replicate on try because LFS is turned off.) |
can you reproduce on the latest docker? |
@zeripath i've updated to v1.8 and this is still an issue, cannot ssh clone when LFS is enabled and if i disable LFS cloning works but pushing doesn't |
Give me a minimal testcase to reproduce and I'll see what I can do. At present I just don't have enough information to figure out what's going wrong and I can't reproduce it. |
@zeripath atm i can only reproduce this on the production machine and not on a clean gitea deployment. I will have to do some more digging, if you have any tips on how to debug this i may be able to provide more info. |
Hmm... that makes me suspicious that this may be something to do with the setup of that machine. Perhaps proxy settings or something else. I see you are mounting your gitea as a suburl of a domain? I wonder if there's (another) bug with that. When you try to duplicate are you also mounting as a sub-domain? |
This should fix go-gitea#5478 and with REQUIRE_SIGNIN_VIEW=true lfs auth errors
It was mentioned by @zeripath in the #6916 that the two commands cmd/serv and cmd/dump should be modified in order to do internal api requests instead of doing the work themselves. This would allow all internal gitea logging and settings to be centralized to avoid logging to multiple places. My minimum test case is to make a "public" repo with REQUIRE_SIGNIN_VIEW set to true, and commit at least 1 LFS file. Thus the following: This is evaluated as My fix was to initialize the settings like cmd/dump did, but after taking some time to think, I agree with @lunny that this is not the way to fix it and @zeripath idea is best. |
* Always set userID on LFS authentication Fix go-gitea#5478 Fix go-gitea#7219 * Deploy keys should only be able to read their repos
[x]
):The problem is that one can't even clone a repo with LFS over SSH if the repo isn't private.
'GIT_TRACE=1 GIT_CURL_VERBOSE=1 git lfs pull'
fails with
'trace git-lfs: api error: Authentication required: Authorization error: https://example.com/gitea/user/repo.git/info/lfs/objects/batch', which is indeed 'HTTP/1.1 401 Unauthorized'.
It is the case because this fragment
in modules/lfs/server.go (parseToken) gives an error.
From the other side command
'ssh -- [email protected] git-lfs-authenticate user/repo.git download'
returns auth token without 'user' field because this condition
in cmd/serv.go (runServ) is false. It is even false if one has 'REQUIRE_SIGNIN_VIEW = true' in his config, because noone initializes setting.Service.RequireSignInView (setting.newService() doesn't get called I guess).
Changing repo type to private solves the problem, but here is the bug anyway.
I also think that initalizing RequireSignInView should be performed, but this is not a proper solution to the issue, since HTTPS cloning of public repo works fine with the same settings.
The text was updated successfully, but these errors were encountered: