mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-15 20:09:18 -05:00
Allow SSH key to be used for commit signatures #14429
Closed
opened 2025-11-02 11:12:43 -06:00 by GiteaMirror
·
10 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
type/proposal
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#14429
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @brtwrst on GitHub (Apr 30, 2025).
Feature Description
To make gitea sign commits generated by the app itself (merge commits, crud actions, repo init ...) users are required to correctly install a gpg signing key in the correct location. The relevant part in the documentation basically says: Go find out how to set that up yourself which has been a pain point for many users over the years and for myself as well.
Now that commit signing with SSH keys has been available for some time, would it be possible to use SSH keys for these commit signatures as well? Could be as simple as putting a private key in a specific .folder (maybe
%(APP_DATA_PATH)/home/.ssh) along with a "use ssh key for commit signing" setting under the[repository.signing]section in the app.ini.Thoughts?
@brtwrst commented on GitHub (Apr 30, 2025):
Ok so important update,

After reading this in the docs:
The default option will interrogate git config for commit.gpgsign optionI did some testing and found out, that you can already make gitea sign these commits with an SSH key and it's quite simple.
Issue is now that it will show the commit without a green lock in the interface when you view it:
I did confirm that this commit is signed by the SSH key I added though.
Here is what I did.
mkdir /data/gitea/home/.sshssh-keygenand create a keypair in/data/gitea/home/.sshchown -R 1000:1000 /data/gitea/home/.ssh/data/gitea/home/.gitconfigand add the following (add to section if it already exists):(not sure if SIGNING_NAME and SIGNING_EMAIL do anything in this case)
This will make gitea sign Merge/CRUD/init commit but sadly gitea will not accept it as a valid signign key and show the commits without a green lock symbol.
Is there a way already to tell gitea that this key should be "trusted" ?
@ChristopherHX commented on GitHub (Apr 30, 2025):
Add the ssh public key to an existing user?
@brtwrst commented on GitHub (Apr 30, 2025):
Yeah that might work but doesn't seem like the "correct way".
Should be some central list that contains the trusted keys.
The canonical place would be a allowed_signers file somewhere.
I tried creating an allowed signers file in the home folder with the key inside and added
to the .gitconfig file - but this changes nothing. Gitea seems not to be able to use this yet.
@ChristopherHX commented on GitHub (Apr 30, 2025):
Seems like this is more complicated.., I also try to figure out how this works.
The first time I used the wrong .gitconfig, my docker image had two of them...
@ChristopherHX commented on GitHub (Apr 30, 2025):
I checked the source code and debugger, this does only work correctly for a single user instance of Gitea. Very fragile.
ssh signed commit can only be verified if
git cat-file commit shais used to extract the signature and verify without git)With the setup you described 2. can not be satisfied for more than one user....,
so indeed we need changes to gitea. However not sure how to proceed.@ChristopherHX commented on GitHub (Apr 30, 2025):
I found how to resolve this part in Gitea 1.23
So I now have
Maybe collaboratorcommitter is better here, need to look around.
I don't think it is a problem to create a user called Gitea that has the signing key verified.
@ChristopherHX commented on GitHub (Apr 30, 2025):
looks good on my end now, thanks for pointing me to the correct git home.
@brtwrst commented on GitHub (May 1, 2025):
Nice find,
It still bugs me that I'd have to create a "dummy" user for this and also that the name of this user is not changeable.
Feels like a bad hack what we're doing here so for now I'll wait on some official Word from the maintainers on how they think this should work.
@ChristopherHX commented on GitHub (May 1, 2025):
It is changeable or do I miss something?, both username and email.
in /data/gitea/home/.gitconfig (of docker image)
Should be the following values for SIGNING_KEY = default without SIGNING_EMAIL and SIGNING_NAME (for default they are read from git config)
Yes you are correct, I didn't change both values.
I used a debugger and looking at the source code, IMHO this needs documentation
@brtwrst commented on GitHub (May 1, 2025):
Thanks for your time.
So this is barely usable and definitely needs documentation and/or some work done to make it easier and more robust.
I still think a solution which doesn't require the creation of another account would be a lot better.