Ssh
在 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 的建議,這很容易:
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'