Ssh

在 sudo 中保留代理轉發

  • April 5, 2013

我希望能夠連接到伺服器,啟動 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 的建議,這很容易:

sudo -E ssh -p 10022 stevebennett@localhost

或者,為了更有選擇性,您可以這樣做:

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

(請注意,這僅適用於向 root 使用者發送請求 - 它需要能夠讀取原始套接字文件。)

我錯誤地認為 $SSH_AUTH_SOCK 環境變數已經被保留了。提示:以下命令不會告訴您任何有用的資訊 :)

sudo echo $SSH_AUTH_SOCK

而這樣做:

sudo bash -c 'echo $SSH_AUTH_SOCK'

引用自:https://serverfault.com/questions/496315