我尝试使用词干python库从远程计算机连接到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 / tor / torrc配置文件。 它说
Tor将从Tor监听本地连接的端口 控制器应用程序,如control-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可能没有答案的副本
答案 0 :(得分:2)
除了ControlPort之外,您还需要设置ControlListenAddress。您可以将其设置为$cat .= array($category->getId() => $category->getName());
(绑定到所有地址)或服务器侦听的特定IP。
如果您选择这样做,最好将防火墙配置为仅允许来自特定IP的控制连接,并将其阻止来自所有其他IP。
另请注意,控制端口流量不会被加密,因此建议使用cookie身份验证,这样您的密码就不会通过网络发送。
您还可以运行隐藏服务以通过Tor公开控制端口,然后使用Stem和Tor连接到隐藏服务。
但一般的答案是需要将ControlListenAddress设置为绑定到127.0.0.1(localhost)以外的IP。
答案 1 :(得分:1)
经过Tor 0.3.3.7
的测试。
ControlListenAddress
的配置已过时,Tor将忽略该配置并记录以下消息
[警告]跳过过时的配置选项'ControlListenAddress'
0.0.0.0:9051
文件中将ControlPort
设置为torrc
。虽然,Tor对此并不十分满意(而且是这样),并且会警告您
您已将ControlPort设置为接受来自非本地的连接 地址。这意味着未在计算机上运行的程序可以 重新配置您的Tor。这很糟糕,因为控制器协议 没有加密!也许您应该只听127.0.0.1并使用 诸如stunnel或ssh之类的工具来加密与控件的远程连接 端口。
此外,您必须设置CookieAuthentication
或HashedControlPassword
,否则ControlPort
将关闭
您已将ControlPort设置为接受来自以下设备的未经身份验证的连接 非本地地址。这意味着程序未在您的计算机上运行 电脑可以重新配置您的Tor,而无需猜测 密码。太糟糕了,我要为您关闭ControlPort。如果 您需要远程控制Tor,请尝试启用身份验证并 使用stunnel或ssh之类的工具来加密远程访问。
@ drew010的答案中提到的所有风险仍然存在。