python
  • tor
  • stem
  • 2017-08-27 176 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

    相關問題