使用Fabric/Paramiko遍历SOCKS5代理时无输出
在使用Fabric 1.6通过SOCKS5代理连接到RHEL5 Linux主机时,命令虽然执行了,但没有任何输出显示在标准输出上。
$> fab -H myhost -f ./fabfile.py remote_test --show=debug
Using fabfile '/home/myuser/fabric/fabfile.py'
Commands to run: remote_test
Parallel tasks now using pool size of 1
[myhost] Executing task 'remote_test'
[myhost] run: echo testing
Enter SOCKS5 password for myuser:
[myhost] Login password for 'myuser':
$> echo $?
0
$>
remote_test函数是:
def remote_test():
run('echo testing')
如果我对一个不是SOCKS5的主机运行这个命令,它就能正常工作。
我正在使用最新的版本,尽管到目前为止我还没有成功让它工作:
Python 2.7.3
Paramiko == 1.10.0
pycrypto == 2.6
fabric == 1.6.0
RHEL5.9
openssh-4.3p2-82.el5
我的~/.ssh/config文件看起来是这样的:
Host *.domain
ProxyCommand connect -S socksproxy.domain:1080 %h %p
并且我使用的是从 http://www.meadowy.org/~gotoh/ssh/connect.c 编译的connect二进制文件。
由于我在公司网络上无法访问github,所以我会在有机会的时候去那边询问。
有没有人知道这可能是什么原因呢?
谢谢,
Matt
1 个回答
0
我使用的是 connect
,而不是 fabric,但答案应该是一样的。在 connect.c
文件中有个解释,提到 SOCKS5_PASSWORD
、HTTP_PROXY_PASSWORD
和 CONNECT_PASSWORD
这些设置可以满足你的需求。我有一个叫 ssh-tbb
的脚本,内容如下。
#!/bin/bash
export CONNECT_PASSWORD=""
exec ssh -o ProxyCommand="connect -5 -S 127.0.0.1:9150 %h %p" $*
理想情况下,这个脚本应该叫 ssh-tor
,并且当然要检测一下 tor
是否在 9050 或 9150 端口上运行。