远程Tensorboard不适用于SSH隧道

时间:2020-04-15 16:10:42

标签: tensorflow ssh tensorflow2.0 tensorboard ssh-tunnel

我正在家中尝试使用Tensorboard监视一个Tensorflow培训,该培训正在我的机器上运行。
我们有一个ssh网关来访问工作中的机器,所以我必须建立一个ssh隧道,从网上看到的内容来看,这是如何与Tensorboard 6006的默认端口连接的方法:

ssh -NfL 6006:remote_machine:6006 user@ssh_gateway_machine

然后在远程计算机上:

tensorboard --logdir dir/ --port 6006

然后在家里的机器上:

http://localhost:6006

但是页面是白色的并且永远加载,无法检索数据。

当我尝试监视同一台机器但从另一台正在工作的机器上监视时,以相同的方式(没有ssh隧道)使用端口转发可以很好地工作,因此问题不是来自Tensorboard,而是来自我认为的ssh隧道。我不知道为什么。

3 个答案:

答案 0 :(得分:2)

在启动张量板时尝试使用bind_all参数。它允许张量板的远程连接。因此您的命令应类似于

tensorboard --logdir dir/ --port 6006 --bind_all

引用:https://github.com/tensorflow/tensorboard/blob/master/README.md#i-get-a-network-security-popup-every-time-i-run-tensorboard-on-a-mac

答案 1 :(得分:2)

我同意,您必须使用bind_all选项执行:

tensorboard --logdir dir/ --port 6006 --bind_all

但是,也许就您而言,您只需要检查ssh_gateway_machine ssh服务器是否配置为允许端口转发:AllowTcpForwarding yes

此处的解释:

示例:

ssh user@ssh_gateway_machine
sudo -i
vi /etc/ssh/sshd_config

如果可能(询问您公司的IT安全人员),请编辑以下行:

AllowTcpForwarding yes

但是在我的情况下,因为我无法从Internet访问,所以我不得不使ssh远程端口转发-L选项远程执行(在-R上),直接连接到remote_machine网络的任何端口。

因此,我认为我的remote_machine远程端口转发方法更好,如果您的-R可以访问互联网,并且可以在NAS或{{1 }}。

因此,我重复一遍,它是通过在remote_machine上执行的local_machine选项来完成的。

因此,-R成为本地设备(例如,Synology NAS)。

如果您没有NAS,那么如果您安装/激活SSH服务器,则可能是您的remote_machine。 (ssh_gateway_machine == local_machine

并且您必须修改Internet提供商盒/网络路由器的端口转发),以将ssh传入端口转发到内部ssh_gateway_machine(以便能够通过Internet提供商盒从Internet进行传入访问,直到您的local_machine

您必须在ssh_gateway_machine(Synology NAS),ssh_gateway_machinessh_gateway_machine选项中检查和修改服务器ssh配置:

GatewayPorts

编辑行:

AllowTcpForwarding

此外,不要忘记修改ssh user@ssh_gateway_machine sudo -i vi /etc/ssh/sshd_config 的防火墙规则以仅接受来自GatewayPorts yes AllowTcpForwarding yes 公用IP的ssh传入访问。 也许也可以在您的互联网路由器上完成。

之后,您必须从ssh_gateway_machine执行:

remote_machine

with remote_machine = ssh user@ssh_gateway_machine_public_ip -R 6006:localhost:6006 = ssh_gateway_machine_public_ip

网络图片: My network map

答案 2 :(得分:0)

就我而言,我使用 ERROR: LoadError: MethodError: no method matching /(::CValue, ::Vector{CValue}) 在 ubuntu 上运行 tensorboard,并且在 tensorboard --logdir=runs 处看到了永远加载屏幕

我已多次运行该命令,每次它都会启动一个新端口,因此我尝试访问的端口被孤立张量板使用,导致永远加载屏幕。

最终对我有用的是

http://localhost:6008

并使用

运行一个新的张量板

kill -9 <pid_my_old_tensorboards>