我希望能够连接到服务器,启动 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'