在 sudo 中保留代理转发

在 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/

答案1

感谢 user157963 的建议,这变得很容易:

sudo -E ssh -p 10022 stevebennett@localhost

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

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

(请注意,这仅在以 root 用户身份执行 su 时才有效 - 它需要能够读取原始套接字文件。)

我误以为 $SSH_AUTH_SOCK 环境变量已被保留。提示:以下命令没有告诉您任何有用的信息 :)

sudo echo $SSH_AUTH_SOCK

而这样做:

sudo bash -c 'echo $SSH_AUTH_SOCK'

相关内容