Create a new repository, or reuse an existing one.
Generate a new SSH key:
ssh-keygen -t ed25519 -C "your_email@example.com"
Since OpenSSH version 8.2 using FIDO2 security keys for SSH is recommed.
https://github.blog/2021-05-10-security-keys-supported-ssh-git-operations/
OnlyKey & Nitrokey 3 support ed25519 keys with OpenSSH. Only a YubiKey with firmware 5.2.3 or higher supports the ed25519 curve!
ssh-keygen -t ed25519-sk -C "your_email@example.com"
Copy the contents of the file ~/.ssh/id_ed25519.pub
to your SSH keys in your GitHub account settings (https://github.com/settings/keys).
Test SSH key:
$ ssh -T git@github.com
Hi developius! You've successfully authenticated, but GitHub does not provide shell access.
Change directory into the local clone of your repository (if you're not already there) and run:
git remote set-url origin git@github.com:username/your-repository.git
Now try editing a file (try the README) and then do:
$ git commit -am "Update README.md"
$ git push
You should not be asked for a username or password. If it works, your SSH key is correctly configured.