You have 2 possibilities for generating SSH keys:
- generate a key pair on your computer and upload the public key to c4science. !!prefered method!!
- generate a key pair on c4science and download the private key to your computer. C4science will not store your private key.
# Access SSH configuration
Click on the your profile icon at the top right corner, then choose Settings
{F466030}
and then choose, from the left hand side menu, `SSH Public Keys`.
# Generate and upload your SSH key
- Generate a key on your computer, it's important to add a passphrase for your key when prompted
```
ssh-keygen
```
- On c4science, click on {nav SSH Key actions > Upload Public Key}
- Give it a name and paste the content of the `public` key (the .pub file)
- You can find the public key by running this command
```
cat ~/.ssh/id_rsa.pub
```
- Click `Upload Public Key`
- And you're done, you can start clone repositories using SSH
# Generate a key pair on c4science
If you don't know how to generate a key on your computer, c4science can do it for you. If you already uploaded your key, you don't need this.
Click on `SSH Key actions` and then `Generate Keypair`. Follow the dialogs and download the private key to the correct directory (this depends on your Operating System, it usually is `~/.ssh`). You will need to change the permission to the key:
```
chmod 600 ~/.ssh/id_rsa_phabricator.key
```
Now, configure which key to use for c4science. Add the following to your `~/.ssh/config` file:
```
host c4science.ch
HostName c4science.ch
IdentityFile ~/.ssh/id_rsa_phabricator.key
User git
```
# Using SSH from Windows
- Download [[https://git-scm.com/download/win | Git Bash for Windows]], which allow to use standard Bash commands
- Launch Git Bash
- Create and upload the key like [[https://c4science.ch/w/c4science/sshkeys/#generate-and-upload-your | documented above]] with `ssh-keygen.exe` instead, display the content of the pubkey using `cat ~/.ssh/id_rsa.pub` from git bash
- You can now clone your repository from git bash, `git clone ssh://git@c4science.ch/[...]`
- The key should be added to your SSH Agent, if not you can add your key temporarily using `eval "$(ssh-agent -s)"`