使用Fabric/Paramiko遍历SOCKS5代理时无输出

3 投票
1 回答
650 浏览
提问于 2025-04-17 18:05

在使用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_PASSWORDHTTP_PROXY_PASSWORDCONNECT_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 端口上运行。

撰写回答