分享

基于frp通过ssh访问公司(学校)内网机器【Ubuntu系统】

 WindySky 2018-04-11
  • 阿里云  >  教程中心   >  linux教程  >  基于frp通过ssh访问公司(学校)内网机器【Ubuntu系统】  
  • 基于frp通过ssh访问公司(学校)内网机器【Ubuntu系统】
  • 发布时间:2018-01-19 来源:网络 上传者:用户

    关键字: 基于 机器 通过 学校 Ubuntu 访问 系统 公司 SSH frp

    发表文章
  • 摘要:【UpdateTime:20170717】一、本文目的本人最近想尝试使用ssh远程链接家里的电脑。事情是这样的:本人最近想学习和专研【深度学习】,但是实验室的电脑显卡性能不够用,都是2GB的显存(GTX960M)。跑一个MNIST代码就因为显存不够而报错,当然可以通过设置batch_size的大小解决这一问题。但是后面肯定会遇到更大的数据集(cifar100,ImageNet等等),需要更大的显存。另一方面就是显卡性能也不够,别的实验室都有几块GTX1080Ti的集群显卡,或
  • 【UpdateTime:20170717】

    一、本文目的

    本人最近想尝试使用ssh远程链接家里的电脑。事情是这样的:本人最近想学习和专研【深度学习】,但是实验室的电脑显卡性能不够用,都是2GB的显存(GTX 960M)。跑一个MNIST代码就因为显存不够而报错,当然可以通过设置batch_size的大小解决这一问题。但是后面肯定会遇到更大的数据集(cifar100,ImageNet等等),需要更大的显存。另一方面就是显卡性能也不够,别的实验室都有几块GTX 1080Ti的集群显卡,或者是TITAN Xp等,他们跑代码的速度,那叫一个快。基于此,本人是想在家里买一台配有 TITAN Xp 显卡的机器,然后通过ssh远程操作跑实验(虽然还有 TeamViewer 这么好用的工具存在,但是ssh会比 TeamViewer 更稳定些,或者说2种方式都存在的话更保险一些)。要通过ssh链接不属于同一个内网的机器,需要一个外网IP来解决这个问题。同学介绍了一个工具,frp,可以解决这问题,下文将介绍基于frp通过ssh链接内网机器。


    参考网址:

    1. frp 使用文档:https://github.com/fatedier/frp/blob/master/doc/quick_start_zh.md

    2. github - frp:https://github.com/fatedier/frp/blob/master/README.md(有中文版)



    二、相关说明&;&;介绍

    1. frp :frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。frp的作用如下:

    1)利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

    2)对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

    3)利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。


    2. 配置文件:frps.ini 和 frpc.ini

    1)将 frps 及 frps.ini 放到具有公网 IP 的机器上( 本人此处使用阿里云服务器提供的公网)

    2)将 frpc 及 frpc.ini 放到处于内网环境的机器上(本人此处的机器就是放在家里且性能好的机器)


    3. 图示说明:

    如下图所示,本文的目的就是实现“用户实际操作的PC”通过 ssh 去控制“服务器A”。其中,服务器B提供了外网IP,不可缺少。本文的前期准备包括:1)准备1台有外网的服务器B,本文选择阿里云服务器。2)一台你想要控制的服务器或者PC,本文是想要控制家里的一台性能较好的PC机。3)一台你实际操作的PC,如宿舍的笔记本电脑或者实验室普通的PC等。4)针对服务器A和服务器B,我们需要安装和配置go语言环境和frp环境。5)针对用户实际操作的PC,我们只需要安装ssh环境即可,如windows系统可以安装SecureCRT或者Putty;Ubuntu系统可以安装使用ssh或者安装putty。


    基于frp通过ssh访问公司(学校)内网机器【Ubuntu系统】


    三、实现步骤:通过 ssh 访问内网机器

    1.安装&;&;配置go语言开发环境

    参考网址:

    == https://www.runoob.com/go/go-environment.html

    == http://blog.csdn.net/tigerisland45/article/details/53447199

    1)根据系统类型下载go语言安装包:https://www./download

    2)解压( 此处的路径为/usr/local ):tar -xvxf go1.9beta2.linux-amd64.tar.gz

    3)建立Go工作空间:

    == 在/home目录下, 建立一个名为gopath(名字任意)的目录,在该目录中建立三个子目录(名字必须为src、pkg和bin),其实只要创建src目录就可以了。

    src   -- 里面每一个子目录,就是一个包。包内是Go的源码文件 

    pkg  -- 编译后生成的,包的目标文件 

    bin   -- 生成的可执行文件。

    4)配置环境:

    1)gedit ~/.bashrc 或者 vim  ~/.bashrc

    2)在文件尾部添加以下命令: 

    # Go environment 

    export PATH=$PATH:/usr/local/go/bin 

    export GOPATH=/home/gopath

    5)生效配置文件:source ~/.bashrc

    6)测试go语言环境是否配置完成,输入:go version


    2. 下载frp源码并安装

    1)下载源码:go get github.com/fatedier/frp

    (确保go语言已经安装和配置成功)执行命令后代码将会拷贝到 $GOPATH/src/github.com/fatedier/frp 目录下。

    2)编译:进入下载后的源码根目录,执行【make】命令,等待编译完成。编译完成后, bin 目录下是编译好的可执行文件,conf 目录下是示例配置文件。

    3)部署:

    == 将 ./bin/frps 和 ./conf/frps.ini 拷贝至服务器B任意目录。 

    == 将 ./bin/frpc 和 ./conf/frpc.ini 拷贝至服务器A任意目录。 

    == 根据要实现的功能修改两边的配置文件,详细内容见后续章节说明。 

    3.1)frps.ini

    [common]bind_addr = 0.0.0.0# 用于接收 frpc 连接的端口bind_port = 7000log_file = ./frps.loglog_level = info# ssh 为代理的自定义名称,可以有多个,不能重复,和frpc中名称对应[ssh]auth_token = 123 bind_addr = 0.0.0.0# 最后将通过此端口访问后端服务listen_port = 6000

    3.2)frpc.ini

    [common]# frps 所在服务器绑定的IP地址server_addr = x.x.x.xserver_port = 7000log_file = ./frpc.loglog_level = info# 用于身份验证auth_token = 123 # ssh 需要和 frps.ini 中配置一致[ssh]# 需要转发的本地端口local_port = 22# 启用加密,frpc与frps之间通信加密,默认为 falseuse_encryption = true

    == 在服务器B执行 nohup ./frps &; 或者 nohup ./frps -c ./frps.ini &; 。

    == 在服务器A执行 nohup ./frpc &; 或者 nohup ./frpc -c ./frpc.ini &; 。 

    == 通过 ssh -oPort=6000 {user}@x.x.x.x测试是否能够成功连接服务器A({user}替换为服务器A上存在的真实用户)



    四、总结

    1. (服务器A + 服务器B)安装并配置go语言的环境

    2. (服务器A + 服务器B)下载并安装frp

    3. (服务器A,被控制的PC)根据实际情况修改配置文件并运行:frpc.ini(nohup ./frpc -c ./frpc.ini &;)

    4. (服务器B,具有外网)根据实际情况修改配置文件并运行:frps.ini(nohup ./frps -c ./frps.ini &; )

    5. (用户实际操作的PC)通过ssh链接服务器A,只需要执行语句【 ssh -oPort=6000 {user}@x.x.x.x 】即可。


    注:当用户实际操作的PC是ubuntu系统时,使用上述命令即可。但是当PC是windows系统时,我们正常使用的是可视化的软件(如,putty或者SecureCRT等),此时,我们只需要根据配置信息改变端口即可。如下图所示,以putty为例:

    基于frp通过ssh访问公司(学校)内网机器【Ubuntu系统】

    (此时,Port端口为6000,IP address为公网IP地址)


  • 以上是基于frp通过ssh访问公司(学校)内网机器【Ubuntu系统】的内容,更多 基于 机器 通过 学校 Ubuntu 访问 系统 公司 SSH frp的内容,请您使用右上方搜索功能获取相关信息。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多