Phing在服务器A上运行,使用此SSH任务连接到服务器B:
<ssh username="xxxxxx"
host="B"
pubkeyfile="/home/xxxx/.ssh/id_rsa.pub"
privkeyfile="/home/xxxx/.ssh/id_rsa.pem"
command="cd ./public_html/staging; hg pull />
它连接到服务器B ok,但尝试连接到服务器C的hg pull
会回吐remote: Permission denied (public key)
。
然而,从A手动SSH到服务器B并执行hg pull
工作正常,建议代理转发正在运行,因为我没有在B上运行任何代理,仅在A上运行。
有没有办法可以看到B确实使用了哪个公钥来尝试调试它?
答案 0 :(得分:1)
Phing的任务使用的PHP的SSH2似乎不支持代理转发。
用简单的exec任务替换<ssh>
任务,即
<exec command="ssh xxxxxx@B 'cd ./public_html/staging; hg pull'"/>
做了这个伎俩。