同一区域的多个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)

是你可以打开多个隧道。一个会话内的区域

当前得到这个错误:

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)rnrnERR_NGROK_108rn.

是否有可能在一个会话中打开多个区域'AU'的ngrok.connect(22, "tcp")隧道?

是的,这是可能的与付费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)rnrnERR_NGROK_108rn,因为这看起来像是他们为您的请求生成的调试代码。也许将此提供给ngrok支持将帮助他们缩小问题的范围。

最新更新