Roo*_*aBe 13 ssh port-forwarding
我正在尝试将我的端口 8085 转发到远程服务器,该端口是用于小型 http 服务器的实时摄像机流端口。
我正在使用的命令是这样的:
ssh -R $rport:dc-bb7925e7:$camport -p 25 server@192.168.178.20
Run Code Online (Sandbox Code Playgroud)
由于此命令现在是正确的,它确实转发了端口,我可以通过转到 localhost:8085 来查看远程服务器上的实时流,但问题是在客户端上打开了一个 TTY 会话,它阻止了所有进一步的脚本从运行。
所以我尝试在后台使用 ssh:
ssh -Nf -R $rport:dc-bb7925e7:$camport -p 25 server@192.168.178.20
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为似乎连接已关闭。端口转发在脚本中使用,脚本评估 if/then/else 条件,然后执行转发。转发此端口不会停止所有其他脚本。它应该简单地转发端口,然后继续前进,同时保持它打开。
我做错了什么或者还有其他可以使用的标志吗?
gho*_*oti 26
您可以让 SSH 自己处理事情,而不是将活动的 TTY 置于后台。
我的建议是这样的:
ssh -fNT -R $rport:dc-bb7925e7:$camport -p 25 server@192.168.178.20
前三个选项是:
-f Requests ssh to go to background just before command execution.
-N Do not execute a remote command.
-T Disable pseudo-tty allocation.
Run Code Online (Sandbox Code Playgroud)
该-f选项是一个实际背景的东西,但-N并-T节省您不必为分配的SSH会话,其唯一目的就是把你的隧道资源。
另请注意,其中一些选项可以添加到文件中的自定义配置~/.ssh/config文件中,以防您觉得将更多静态配置放入静态配置文件而不是脚本中更可取。该RemoteForward配置文件选项等同于-R命令行选项。
也可以看看:
-N不是后台,也不是远程命令。你想要这样的东西:
ssh -R $rport:dc-bb7925e7:$camport -p 25 server@192.168.178.20&
Run Code Online (Sandbox Code Playgroud)
请注意尾随的 & 符号,它将将该命令置于背景中。
您可能需要编写一些逻辑来在完成后返回并关闭 SSH 会话。
| 归档时间: |
|
| 查看次数: |
15863 次 |
| 最近记录: |