If you’re working with Git and suddenly hit this error:
sign_and_send_pubkey: signing failed for ED25519 "/home/user/.ssh/id_ed25519" from agent: agent refused operation git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. This means your SSH key is not being used correctly by your system or SSH agent.
This guide will walk you through fixing it step-by-step.
What Causes This Error?
This error typically happens when:
- Your SSH key permissions are incorrect
- The SSH agent is not running properly
- The key is not loaded into the agent
- GitHub does not have your public key
- The wrong SSH key is being used
Step 1: Fix SSH Key Permissions
Run the following commands:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub Why this matters:
SSH will refuse to use keys that are too open (for security reasons).
Step 2: Restart SSH Agent and Reload Key
Clear existing keys and start fresh:
ssh-add -D eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 If you still see:
agent refused operation Force restart:
pkill ssh-agent eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 Step 3: Verify SSH Connection to GitHub
Test your connection:
ssh -T git@github.com Expected output:
Hi username! You've successfully authenticated... Step 4: Ensure Your SSH Key Is Added to GitHub
Check your public key:
cat ~/.ssh/id_ed25519.pub Copy the output and add it to GitHub:
- Go to GitHub → Settings → SSH and GPG Keys
- Click New SSH Key
- Paste your key
Step 5: Force Git to Use the Correct Key (Important)
If you have multiple SSH keys, Git might use the wrong one.
Create or edit this file:
nano ~/.ssh/config Add:
Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes Then save and exit.
Step 6: Test Again
ssh -T git@github.com Then retry your Git command:
git pull # or git push Full Fix Script (Quick Copy-Paste)
If you want a fast fix, run everything at once:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 chmod 644 ~/.ssh/id_ed25519.pub pkill ssh-agent eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 ssh -T git@github.com Common Mistakes to Avoid
- Using the wrong key file (
id_rsavsid_ed25519) - Not adding the key to GitHub
- Forgetting to restart the SSH agent
- Having multiple SSH keys without a config file
Pro Tip
If you frequently work across multiple GitHub accounts or servers, always use an SSH config file. It saves you hours of debugging.
Conclusion
This error is not a Git problem – it’s an SSH configuration issue.
Once you:
- Fix permissions
- Restart the agent
- Load the key
- Ensure GitHub has your public key
…everything works immediately.