如何解决具有相同区域的多个 SSH TCP 端口 22 隧道
我目前正在使用多个 RaspBerry Pi 启动一个项目。我已经有一个系统,如果代码失败,请在端口 22 上打开 ssh 隧道。但是,如果两个或多个 RaspBerry Pi 出现故障,则只有一个可以在区域 'au' 的端口 22 (tcp) 上打开隧道。通过 ssh 访问它
def ssh():
ngrok.set_auth_token("MY_SECRET_TOKEN")
conf.get_default().region = 'au'
ssh = ngrok.connect(22,"tcp")
ngrok_process = ngrok.get_ngrok_process()
try:
ngrok_process.proc.wait()
except KeyboardInterrupt:
ngrok.kill
我已经与 Ngrok 的支持人员取得联系,他们提到在端口 22 (tcp) 上可能有多个隧道。
在免费计划中,您只能有一个打开的 ngrok“会话”,但您最多可以通过该会话运行 4 条隧道。您所有的隧道都可以通向端口 22,这样可以正常工作。 - Ngrok 支持
和可能是指具有不同的端口隧道(22、80)
是的,您可以在一个会话中在“au”区域中打开多个隧道
当前收到此错误:
Traceback (most recent call last):
File "/home/pi/main.py",line 210,in <module>
ssh()
File "/home/pi/main.py",line 30,in ssh
ssh = ngrok.connect(22,"tcp")
File "/usr/local/lib/python3.7/dist-packages/pyngrok/ngrok.py",line 245,in connect
api_url = get_ngrok_process(pyngrok_config).api_url
File "/usr/local/lib/python3.7/dist-packages/pyngrok/ngrok.py",line 162,in get_ngrok_process
return process.get_process(pyngrok_config)
File "/usr/local/lib/python3.7/dist-packages/pyngrok/process.py",line 295,in get_process
return _start_process(pyngrok_config)
File "/usr/local/lib/python3.7/dist-packages/pyngrok/process.py",line 465,in _start_process
ngrok_process.startup_error)
pyngrok.exception.PyngrokNgrokError: The ngrok process errored on start: Your account is limited to 1 simultaneous ngrok client session.\nActive ngrok client sessions in region 'au':\n - ts_1opHl3G90CmgGPiP6JM0IUpcXZM (IP)\r\n\r\nERR_NGROK_108\r\n.
是否可以在一个会话中打开多个 ngrok.connect(22,"tcp")
隧道并打开区域“AU”?
解决方法
是的,付费 ngrok
帐户可以做到这一点。您可以简单地多次调用 connect()。
from pyngrok import ngrok,conf
ngrok.set_auth_token("MY_AUTH_TOKEN")
conf.get_default().region = "au"
ssh1 = ngrok.connect(22,"tcp")
print(ssh1.public_url)
ssh2 = ngrok.connect(22,"tcp")
print(ssh2.public_url)
ssh3 = ngrok.connect(22,"tcp")
print(ssh3.public_url)
ssh4 = ngrok.connect(3306,"tcp")
print(ssh4.public_url)
http1 = ngrok.connect(8080,bind_tls=True)
print(http1.public_url)
http2 = ngrok.connect(8080,bind_tls=True)
print(http2.public_url)
print(len(ngrok.get_tunnels()))
ngrok_process = ngrok.get_ngrok_process()
try:
ngrok_process.proc.wait()
except KeyboardInterrupt:
ngrok.kill()
上面的例子将导致总共 6 个隧道,混合多个 TCP 隧道(到相同和不同的端口)和多个 HTTP 隧道。
这将不适用于免费帐户。假设您的有效身份验证令牌已成功注册到 pyngrok
(可能是这里的问题?),我会向他们发送代码段 ts_1opHl3G90CmgGPiP6JM0IUpcXZM (IP)\r\n\r\nERR_NGROK_108\r\n
,因为这看起来像是他们为您的请求生成的调试代码.或许将这些提供给 ngrok
支持人员可以帮助他们缩小问题所在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。