I figured this was worth a post, as I’ve never ran into this problem before. I’ve been working on setting up a server, to which I connect using RSA. The standard name for an RSA key file is
id_rsa(.pub). However, as I use my ‘standard’ key elsewhere, I wanted to use a specific key for this server.
Connecting via SSH to the server with the key is as simple as adding
-i /path/to/key. The problem arose when I needed to be able to push to a Git repository hosted on the server, and adding
git-push doesn’t work.
The solution was to add a
Host directive to my
~/.ssh/config file. Then, use that
Host to connect to when
push’ing to the remote server.
If it doesn’t exist, create the file
~/.ssh/config. Add the following to it, editing where necessary.
Host RemoteServer HostName remote-server.tld User git IdentityFile ~/.ssh/remoteserver_key
Remember to reload SSH after creating this file. This example config would be the equivalent of running a command like
ssh email@example.com -i ~/.ssh/remoteserver_key. You can even run
ssh RemoteServer to test the connection out.
In your Git repository, add a new remote repository. Here I’ve called it
origin, as the convention might have it.
git remote add origin RemoteServer:path/to/repository.git
Instead of specifying a user
@ a domain, it uses the name of the
Host in the SSH config. The
path/to/repository.git is relative, on the average system, that will probably point to
Try running a
git push origin master to see if it works!