2014-03-05 73 views
7

我正在嘗試爲我正在使用的webapp設置Capistrano,並且無法讓代理轉發工作。SSH忽略我的ForwardAgent配置?

這裏是我的~/.ssh/config

Host rs 
Hostname <ip of my server> 
    ForwardAgent yes 

User root 

而且我不覺得默認的設置覆蓋任何東西,因爲ForwardAgent從未被提及存在(除了在註釋行)。

這裏發生了什麼,當我ssh正常:

$ ssh -v [email protected]<server> 
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 
debug1: Reading configuration data /Users/ulyssecarion/.ssh/config 
debug1: Reading configuration data /etc/ssh_config 
debug1: /etc/ssh_config line 20: Applying options for * 
debug1: /etc/ssh_config line 102: Applying options for * 

-- snip -- 

debug1: channel 0: new [client-session] 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 
debug1: Sending environment. 
debug1: Sending env LANG = en_US.UTF-8 
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64) 

如果我強迫SSH允許代理轉發與-A標誌,那麼我就可以得到它的工作:

$ ssh -Av [email protected]<server> 
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 
debug1: Reading configuration data /Users/ulyssecarion/.ssh/config 
debug1: Reading configuration data /etc/ssh_config 
debug1: /etc/ssh_config line 20: Applying options for * 
debug1: /etc/ssh_config line 102: Applying options for * 

-- snip -- 

debug1: channel 0: new [client-session] 
debug1: Requesting [email protected] 
debug1: Entering interactive session. 
debug1: Requesting authentication agent forwarding. # Note this additional line here 
debug1: Sending environment. 
debug1: Sending env LANG = en_US.UTF-8 
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64) 

(請注意,第二個例子中的日誌有一個額外的線表示代理轉發正在被請求。)

這是正常的,還是我做錯了什麼?提前致謝!

+1

您是否在命令行中使用「rs」作爲主機名?否則,配置塊不適用。 – chepner

回答

12

此塊

Host rs 
    HostName <ip of my server> 
    ForwardAgent 
    User root 

只適用,如果你對ssh調用看起來像

ssh rs 

在這種情況下ssh知道應該在的地方使用「RS」。在您的通話

ssh -v [email protected]<server> 

無論您使用的是作爲<server>不匹配「RS」(因爲只有文本字符串「RS」是要匹配),所以該塊不適用。

Host選項的參數必須是與您在命令行上實際使用的主機名匹配的模式。

+0

幾小時後,這個答案幫助我解決了它。我的問題是'Host example.com ForwardAgent yes',後面跟着缺少'ForwardAgent yes'的對應別名。 – Leo

1

ServerFault上有關於設置ssh代理轉發的一些很好的信息。 https://superuser.com/questions/168933/extra-configuration-required-for-ssh-agent-forwarding

我想指出的一件事,服務器上的ssh配置文件可能有ForwardAgent註釋掉,但至少在我的配置文件中,它真的列出了ssh的默認值。對於某些openssh版本來說,你必須在服務器上設置AllowAgentForwarding選項。我發現這篇文章真的很有用https://help.github.com/articles/using-ssh-agent-forwarding

檢查ssh代理轉發是否有效的方法是查看$ SSH_AUTH_SOCK環境變量。

回聲 「$ SSH_AUTH_SOCK」