Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save wojons/7f72be4c9d15993f79bd8b9f629491d9 to your computer and use it in GitHub Desktop.
Save wojons/7f72be4c9d15993f79bd8b9f629491d9 to your computer and use it in GitHub Desktop.
Git clone using ssh agent forwarding and sudo
SSH agent forwarding is great. It allows you to ssh from one server to
another all the while using the ssh-agent running on your local
workstation. The benefit is you don't need to generate ssh key pairs
on the servers you are connecting to in order to hop around.
When you ssh to a remote machine the remote machine talks to your
local ssh-agent through the socket referenced by the SSH_AUTH_SOCK
environment variable.
So you the remote server you can do something like:
> git clone git@github.com:my-github-account/my-repo.git
And git will make use of the ssh-agent running on your local
workstation to authenticate with github and clone your repo.
This fails if you do
> sudo git clone git@github.com:my-github-account/my-repo.git
because your environment variables are not available to the
commands running under sudo.
However, you can set the SSH_AUTH_SOCK variable for the command by
passing it on the command line like so
> sudo SSH_AUTH_SOCK=$SSH_AUTH_SOCK git clone git@github.com:my-github-account/my-repo.git
and all is well.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment