Setting up keys
Scenarios for configuring keys for a new or existing git repository:
- I want to use the auto-generated key pair across multiple projects
- I want to use my existing SSH key pair
- I want to avoid symlinking my private key in the workspace
I want to use the auto-generated key pair across multiple projects
ctg init auto generates a new key for convenience. You can (but don’t have to) use the same key across multiple projects.
To do that, you can copy the private key to ~/.config/cottage/identity/ and symlink it back to the project:
mkdir -p ~/.config/cottage/identity chmod 700 ~/.config/cottage/identity mv -v .cottage/identity ~/.config/cottage/identity/"$(basename $PWD)" ln -s -v ~/.config/cottage/identity/"$(basename $PWD)" .cottage/identityrenamed '.cottage/identity' -> '/home/...XXX.../.config/cottage/identity/tmp....XXX...' '.cottage/identity' -> '/home/...XXX.../.config/cottage/identity/tmp....XXX...'
I want to use my existing SSH key pair
If you already have an SSH key pair1 (e.g. the one you use with git), you can use it with cottage by adding a symlink to the private key in the .cottage/identity file or directory, and copying the public key to the .cottage/recipients directory.
# ssh-keygen -t rsa # (optional: generate a new RSA key pair without passphrase) rm -v .cottage/identity ln -s -v ~/.ssh/id_rsa .cottage/identity cp -v ~/.ssh/id_rsa.pub .cottage/recipients/$USERremoved '.cottage/identity' '.cottage/identity' -> '/home/...XXX.../.ssh/id_rsa' '/home/...XXX.../.ssh/id_rsa.pub' -> '.cottage/recipients/...XXX...'
I want to avoid symlinking my private key in the workspace
You don’t have to symlink or copy your private key in the workspace.
By default, cottage looks for private keys in the .cottage/identity file or directory.
If the project-level identity is absent, it will try to load all keys from ~/.config/cottage/identity.
If that is also absent, it will try to load all keys from ~/.ssh.
You can also always mention the path to the private key using the -i / --identity flag or the COTTAGE_IDENTITY environment variable.
rm -v .cottage/identityremoved '.cottage/identity'
-
(cott)age is compatible with RSA and Ed25519 keys that are generated without passphrase. You can always generate a new SSH (e.g. RSA) key using
ssh-keygen(e.g.ssh-keygen -t rsa) to use with cottage. ↩