Answers:
为了避免使远程服务器接受本地外部IP的问题,我将采取以下措施:
-L
转移6006
到16006
我的计算机的端口中(例如):
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
它的作用是在端口上,一切都6006
在服务器(在127.0.0.1:6006
)将被转发到我的机器的端口上16006
。
tensorboard --logdir log
具有默认6006
端口的标准在远程机器上启动tensorboard127.0.0.1
这是您的本地计算机ip,因此您应保持原样。不要将其更改为您的远程IP。我为此浪费了10分钟。我真笨!
-4
ssh标志强制执行IPv4即可解决。读过类似的问题,许多人在服务器中遇到IPv6地址问题。
您可以使用ssh
不需要与您如何连接到服务器的方式绑定的另一个命令进行端口转发(作为另一个答案的替代方法)。因此,以下步骤的顺序是任意的。
从本地计算机运行
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
在远程计算机上,运行:
tensorboard --logdir <path> --port 6006
然后,导航到(在本示例中)本地计算机上的http:// localhost:16006。
(ssh命令的解释:
-N
:没有远程命令
-f
:将ssh放在后台
-L <machine1>:<portA>:<machine2>:<portB>
:
转发<machine2>:<portB>
(远程作用域)到<machine1>:<portA>
(本地作用域)
您不需要做任何花哨的事情。赶紧跑:
tensorboard --host 0.0.0.0 <other args here>
并连接您的服务器网址和端口。该--host 0.0.0.0
告诉tensorflow从在本地计算机上的所有IPv4地址连接听。
"whats my ip"
:wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
从那里再次。6006
123.123.12.32:6006
如果您的远程服务器已开放使用本地IP地址进行通信,则应该可以看到远程Tensorboard。
警告:如果所有互联网流量都可以访问您的系统(如果您尚未指定可以访问它的单个IP地址),则任何人都可以查看TensorBoard结果并自行创建SkyNet。
这不是一个正确的答案,而是一个疑难解答,希望可以帮助其他像我这样经验不足的人。
就我而言(firefox + ubuntu16),浏览器正在连接,但显示空白页(选项卡上带有tensorboard徽标),并且根本没有显示日志活动。我仍然不知道这可能是什么原因(没有深入研究,但是如果有人知道,请告诉我们!),但是我解决了切换到ubuntu默认浏览器的问题。这里的确切步骤与@Olivier Moindrot的答案几乎相同:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
并访问localhost:16006
。tensorboard页面应立即加载。要检查SSH隧道是否有效,一个简单的回显服务器(例如python脚本)可以帮助您:
<ECHO>.py
服务器中的文件中,然后使用运行它python <ECHO>.py
。现在,服务器将在0.0.0.0:5555上监听echo脚本。ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
将连接到服务器中运行的echo脚本。键入hello
并按Enter键将hello
回打印。在这种情况下,您的SSH隧道正在运行。这就是我的情况,使我得出结论,该问题涉及浏览器。尝试从其他终端连接导致终端冻结。如我所说,希望能有所帮助!
干杯,
安德烈斯
https://github.com/dmlc/tensorboard
只是为该版本添加了更多替代方案建立。欢呼声
您可以在远程服务器的终端上直接运行以下命令来运行tensorboard:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
或者您也可以在ipython笔记本中启动tensorboard:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
您必须使用端口转发创建ssh连接:
ssh -L 16006:127.0.0.1:6006 user@host
然后运行tensorboard
命令:
tensorboard --logdir=/path/to/logs
然后,您可以tensorboard
在浏览器中轻松访问以下网址:
localhost:16006/
另一种方法是使用反向代理,该代理使您可以从任何与Internet连接的设备查看Tensorboard,而无需使用SSH。例如,这种方法可以使在移动设备上查看Tensorboard更加容易/易于处理。
脚步:
1)在托管Tensorboard的远程计算机上下载反向代理Ngrok。有关说明(请参见https://ngrok.com/download)(约5分钟的设置)。
2)运行ngrok http 6006
(假设您在端口6006上托管Tensorboard)
3)保存ngrok输出的URL:
4)将其输入到任何浏览器中以查看TensorBoard:
特别感谢Sam Kirkiles