I\'m trying to setup a git client on linux. I uploaded my private key to the machine, and I understand that I should put it in ~/.ssh, but I don\'t have access to that folder.
You can achieve that using a ssh config file.
First create a file inside your ~/.ssh
folder named config
, you can use some command like the following
$ nano ~/.ssh/config
Then, the content of the file should have the location of your key based on each host name. for example:
Host github.com
IdentityFile ~/myPublicKeyFolder/myGitHubFile
Host heroku.com
IdentityFile ~/myPublicKeyFolder/myHerokuFile
So, when git tries to access each host it will follow the rules inside this config file based on the git host your trying to reach
One option is to use ssh-agent
and provide a file name to ssh-add
.
For example:
$ ssh-agent /bin/bash
$ ssh-add ~/mykeys/id_rsa
For a project I am working on my app needs to spit out a shell script with all of the git commands to init/commit/push to an external repository. The ~/.ssh/config is off limits so I have my public/private keys in my app directory. I used vhallac's answer. This is what I had to do in my shell script to use my key:
eval `/usr/bin/ssh-agent`
ssh-add /path/to/.ssh/id_rsa
hope this helps someone
I would have said put the file name in ~/.ssh/config
, but you likely would not have access to this file, too.
You can give ssh
the private key to use with the -i keyfile
option.
Now how to say git which options to pass to ssh?
The GitTips page says create a wrapper script and point to it with the GIT_SSH
environment variable.
It looks like you also can use the git configuration core.gitProxy
, but I did not find a good example and some mailing list message suggests it is only for the git:
protocol.
Use ssh-agent
ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone git@bitbucket.org:uname/test-git-repo.git'