python
  • tor
  • stem
  • 2017-08-27 618 views 1 likes 
    1

    我试图从远程机器使用干python库连接到tor的控制端口(9051)。如何从远程主机连接到Tor控制端口(9051)?

    dum.py

    from stem import Signal 
    from stem.control import Controller 
    
    
    def set_new_ip(): 
        """Change IP using TOR""" 
        with Controller.from_port(address = '10.130.8.169', port=9051) as controller: 
         controller.authenticate(password='password') 
          controller.signal(Signal.NEWNYM) 
    set_new_ip() 
    

    我收到以下错误

    Traceback (most recent call last): 
        File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 398, in _make_socket 
        control_socket.connect((self._control_addr, self._control_port)) 
    ConnectionRefusedError: [Errno 111] Connection refused 
    
    During handling of the above exception, another exception occurred: 
    
    Traceback (most recent call last): 
        File "dum.py", line 28, in <module> 
        set_new_ip(); 
        File "dum.py", line 7, in set_new_ip 
        with Controller.from_port(address = '10.130.4.162', port=9051) as controller: 
        File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/control.py", line 998, in from_port 
        control_port = stem.socket.ControlPort(address, port) 
        File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 372, in __init__ 
        self.connect() 
        File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 243, in connect 
        self._socket = self._make_socket() 
        File "/home/jkl/anaconda3/lib/python3.5/site-packages/stem/socket.py", line 401, in _make_socket 
        raise stem.SocketError(exc) 
    stem.SocketError: [Errno 111] Connection refused 
    

    然后,我通过在/ etc /符/的torrc配置文件中去。 它说

    上的Tor将监听本地连接距离Tor 控制器的应用,如控制spec.txt记录的端口。

    ControlPort 9051 
        ## If you enable the controlport, be sure to enable one of these 
        ## authentication methods, to prevent attackers from accessing it. 
        HashedControlPassword 16:E5364A963AF943CB607CFDAE3A49767F2F8031328D220CDDD1AE30A471 
        SocksListenAddress 0.0.0.0:9050 
        CookieAuthentication 1 
    

    我的问题是, 如何连接到从远程主机控制的Tor的端口?
    是否有任何工作或配置参数,我需要设置?

    Stem is giving the "Unable to connect to port 9051" error它没有答案

    +1

    您可以使用SSH隧道(请参阅'man ssh'中的'-L'参数)。 –

    回答

    1

    你需要设置ControlListenAddress除了ControlPort可能重复。您可以将其设置为0.0.0.0(绑定到所有地址)或您的服务器侦听的特定IP。

    如果您选择这样做,将防火墙配置为仅允许来自特定IP的控制连接并阻止来自所有其他IP的连接是非常明智的。

    另请注意,控制端口流量不会被加密,因此建议使用cookie认证,以便您的密码不通过网络发送。

    您也可以运行一个隐藏的服务,将控制端口暴露在Tor上,然后使用Stem和Tor连接到隐藏的服务。

    但一般的答案是ControlListenAddress需要设置为绑定到除127.0.0.1(本地主机)以外的IP。

    +0

    谢谢。这正是我需要的。他们(tor项目)可能应该把它放在手册页或评论torrc配置文件。 – jaggi

    +0

    @jaggi他们不把它放在配置示例中,因为这是一个坏主意,但我链接到此选项的手册页,因此它已发布。您也可以使用Klaus D对SSH隧道的建议,在这种情况下,您需要指定服务器IP和隧道端口。您需要从客户端计算机建立隧道并具有SSH访问权限,最好使用SSH密钥。 – drew010

    +1

    下面是你可以用来从Tor控制客户端设置SSH隧道的命令(如果SSH是一个选项)。 'ssh -p 22 [email protected] -L 15090:127.0.0.1:9051 -N'然后,将Stem连接到控制连接的'127.0.0.1:15090'。它将通过SSH安全地隧道传输。好像自从IP为10.0.0.0/8你可能在私人网络上,所以这可能不需要。 – drew010

    相关问题