SSH-Forwarding über SUDO behalten
Aus Sicherheitsgründen werden beim Wechsel per Sudo auf einen anderen Benutzer die Umgebungsvariablen (Environment) gelöscht. Allerdings kann es nützlich sein, die Variable SSH_AUTH_SOCK zu behalten, damit das SSH-Forwarding weiter funktioniert.
Im SSH-Client muss natürlich das Agentforwarding aktiviert sein (global in /etc/ssh/ssh_config oder in ~/.ssh/config):
Host * ForwardAgent Yes
Dann folgende Zeile unter dem „Defaults env_reset“ eintragen (visudo):
Defaults env_reset Defaults env_keep+=SSH_AUTH_SOCK
Das funktioniert allerdings nur, wenn man von einem normalen User auf root wechselt, da der Auth-Socket nur vom ursprünglichen Benutzer lesbar ist (root darf aber natürlich alles):
user@server:/$ ssh-add -l 4096 34:5b:42:b6:6f:f7:28:3e:54:e9:76:14:43:a2:04:c5 user@server (RSA) user@server:~$ sudo su root@server:/# ssh-add -l 4096 34:5b:42:b6:6f:f7:28:3e:54:e9:76:14:43:a2:04:c5 user@server (RSA)
Unter Debian Wheezy hat es per „sudo su -“ nicht mehr funktioniert. Allerdings geht es mit „sudo -i“:
user@server:~$ ssh-add -l 4096 34:5b:42:b6:6f:f7:28:3e:54:e9:76:14:43:a2:04:c5 user@server (RSA) user@server:~$ sudo -i root@server:~# ssh-add -l 4096 34:5b:42:b6:6f:f7:28:3e:54:e9:76:14:43:a2:04:c5 user@server (RSA)
Dies wurde mit Debian/Ubuntu getestet, sollte aber auch in anderen Distributionen funktionieren.