远程使用内网服务器的tensorboard和jupyter notebook

基本做法就是通过ssh建立主机和服务器之间的隧道,然后把服务器当地的端口转发到主机。
值得注意的是ssh尤其是开放端口的ssh存在安全风险,使用需谨慎。

建立SSH隧道

关于ssh的应用可以参考ssh -D -L -R 差异。(这篇文章里的host1可以看作客户端,host2看作服务器,host3是中间转接主机3)
主要困难在于服务器位于内网,外网客户端不可见。客户端分两种情况,分别是客户端位于内网和外网。(外网指的是有公网IP,世界任意位置可以通过其IP地址找到该电脑; 而内网指的是无公网IP,只能通过局域网其他主机访问。)
情况一:客户端位于外网
此种情况下,服务器可以通过IP地址寻址客户端,所以在服务器端建立与客户端的反向链接。通过-N -f后台运行。具体命令为:

在服务器主机上执行:
ssh -f -NR :localhost: [username@]

情况二:客户端位于内网
此种情况下,服务器和客户端互相找不到对方,但是存在某个可以共同访问的主机3(如果不存在就需要申请一个云虚拟主机)。通过主机3转发两者之间的链接。具体命令为:

在主机3上执行:
ssh -f -NR :: [username@]

还有一种极端情况,就是客户端和服务器之间通过超过一个的主机相连,即存在client<–>host3<–>host4<–>…<–>hostn<–>server的链路。那么可以通过一种普适的方法解决,也是大多数情况都可以使用的方法:从client开始,依次在链路主机上建立本地转发。具体命令如下:

在客户端上执行:
ssh -f -NL :localhost: [username@]
在i=3到n-1主机上执行:
ssh -f -NL 1}_port>:localhost:{i}_port> [username@]1}_ip_address> 
在hostn主机上执行:
ssh -f -NL :localhost: [username@]server_ip_address

使用tensorboard和jupyter notebook

tensorboard的server port是6006;
jupyter notebook的server port是8888。

构造好隧道之后,在服务器端正常调用tensorboard以及jupyter notebook。在客户端的chrome浏览器地址栏使用localhost:访问即可。

你可能感兴趣的:(Ubuntu,ssh,Tensorflow,jupyter,Tensorflow使用技巧,服务器,ssh,tensorflow,jupyter,内网穿透)