Skip to content

Instantly share code, notes, and snippets.

@yggi
Last active April 18, 2016 08:08
Show Gist options
  • Save yggi/46b77e6a5ce62ea6d881aa72f11ee91f to your computer and use it in GitHub Desktop.
Save yggi/46b77e6a5ce62ea6d881aa72f11ee91f to your computer and use it in GitHub Desktop.
SSH tricks

#agent-forwarding and sudo

[http://serverfault.com/questions/107187/ssh-agent-forwarding-and-sudo-to-another-user]

As you mentioned, the environment variables are removed by sudo, for security reasons.

But fortunately sudo is quite configurable: you can tell it precisely which environment variables you want to keep thanks to the env_keep configuration option in /etc/sudoers.

For agent forwarding, you need to keep the SSH_AUTH_SOCK environment variable. To do so, simply edit your /etc/sudoers configuration file (always using visudo) and set the env_keep option to the appropriate users. If you want this option to be set for all users, use the Defaults line like this:

Defaults env_keep+=SSH_AUTH_SOCK

man sudoers for more details.

You should now be able to do something like this (provided user1's public key is present in ~/.ssh/authorized_keys in user1@serverA and user2@serverB, and serverA's /etc/sudoers file is setup as indicated above):

user1@mymachine> eval `ssh-agent`  # starts ssh-agent
user1@mymachine> ssh-add           # add user1's key to agent (requires pwd)
user1@mymachine> ssh -A serverA    # no pwd required + agent forwarding activated
user1@serverA> sudo su - user2     # sudo keeps agent forwarding active :-)
user2@serverA> ssh serverB         # goto user2@serverB w/o typing pwd again...
user2@serverB>                     # ...because forwarding still works
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment