在sudo中保留代理转发

我希望能够连接到服务器,启动一个sudo shell,然后使用代理转发连接到另一台服务器(以便使用SCP将文件复制到受保护区域)。 但:

ubuntu@tunnelator:/var/www$ ssh -p 10022 stevebennett@localhost Last login: Fri Apr 5 10:54:03 2013 from localhost ~ exit Connection to localhost closed. ubuntu@tunnelator:/var/www$ sudo ssh -p 10022 stevebennett@localhost Password: 

据推测,启动sudo shell会阻止代理转发。 不同之处在于:

 debug1: Offering RSA public key: id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 277 debug1: Authentication succeeded (publickey). 

与:

 debug1: Next authentication method: publickey debug1: Trying private key: /root/.ssh/id_rsa debug1: Trying private key: /root/.ssh/id_dsa debug1: Trying private key: /root/.ssh/id_ecdsa debug1: Next authentication method: keyboard-interactive 

有没有办法做到这一点? (设置大致如下所述: http : //codysoyland.com/2010/jun/6/ssh-tip-automatic-reverse-tunnels-workflow-simplif/ )

感谢user157963的build议,事实certificate这很简单:

 sudo -E ssh -p 10022 stevebennett@localhost 

或者,为了更有select性,你可以这样做:

 sudo su -l -c "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK; ssh -p 10022 stevebennett@localhost" 

(注意这只适用于root用户 – 它需要能够读取原始套接字文件。)

我错误地认为$ SSH_AUTH_SOCK环境variables已被保留。 提示:下面的命令不会告诉你任何有用的东西:)

 sudo echo $SSH_AUTH_SOCK 

而这确实如此:

 sudo bash -c 'echo $SSH_AUTH_SOCK'