V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
duIT
V2EX  ›  VPS

有什么好的办法通过图形界面远程控制 Ubuntu 系统 VPS 的 FTP 客户端的行为?

  •  
  •   duIT · 2017-03-19 21:57:15 +08:00 · 477 次点击
    这是一个创建于 2595 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是有一个盒子专门来下载 PT ( Seedbox,提供基础的 App 功能,不能 SSH ),后来发现盒子下好的文件下到本地的速度不堪入目,于是就想由 Seedbox 直接传到自己的智能路由器里。

    然而智能路由器的 aria2 功能太弱,无法进行文件夹传输,我又有一个 VPS ( Ubuntu 16.04 系统),就想把 VPS 作为中继传输。

    现在的想法是,在 VPS 上用 FTP 客户端进行盒子对智能路由器的传输,期望能在本地用远程图形界面控制其行为。请问有什么好的实现方法呢?

    5 条回复    2017-03-21 01:18:14 +08:00
    msg7086
        1
    msg7086  
       2017-03-20 12:33:18 +08:00
    你盒子能提供什么样的服务?换我的话可能会考虑在 VPS 上架设代理然后直接在 Linux 里通过 VPS 代理拖盒子。
    duIT
        2
    duIT  
    OP
       2017-03-20 18:21:20 +08:00
    @msg7086 我已经实现了想要达成的目的了,写了一个文章来阐述整个摸索过程的前因后果……下面发一下吧
    duIT
        3
    duIT  
    OP
       2017-03-20 18:23:51 +08:00
    Seedbox 的 PT 下载速度令人非常满意,抢上传也是刚刚的。本以为摸索之旅到这里告一段落了,然而, Seedbox 到本地的蛋疼的传输速度非常蛋疼。
    在金钱的限制的基础上,不断逼迫我寻找方法,最终找到廉价又好用的方案。

    蛋疼的 Seedbox 到本地传输
    此前用电脑的 WinSCP 分别通过 FTP 、 SFTP 从智能路由器和 Seedbox 下载数据,前者能达到 6MB/s ,比较满意;后者一般有 1M/s ,勉强能接受。然而悲剧是,不知道为啥某天速度变味了一百多 KB ,这就比较令人蛋疼,那还是要挂着电脑下载,这恰是我最讨厌的。
    解决这个问题第一个思路,是通过智能路由器下载 Seedbox 的 SFTP ,然而发现,智能路由器处理 FTP 的能力比电脑差得有点远:只能通过起 aria2 的功能进行下载,而且下载只能单文件下载……这对于我所需要的传输毫无用处。

    对 Seedbox 的中转设备的探索
    因此想到,智能路由器功能不行,这是由于它是阉割的 Linux ,只能用 aria2 处理 FTP ,那如果用完整的 Linux 是否可行呢?在宿舍的局域网内加入完整 Linux 设备,使用完整的 FTP 应用,既可以将其进行从 Seedbox 到智能路由器的转发,也可以把移动硬盘直接接到这个 Linux 设备上直接下载。这就想到了可玩神器树莓派,然而查了价格要几百块,那也舍不得;查了查 windows 系统最便宜的主机,淘宝上最便宜的也是差不多价格,而且是二手老旧的配置。
    继而又寻思,能否用云主机来进行中转呢?我查了查阿里云,没想到有学生优惠! 9.9 元 /月,这是首次有机会使用图形化界面的云主机, Windows Server 系统,通过电脑内置的“远程桌面连接”进行控制,体验相当不错,类似虚拟机 VirtualBox 的体验。然而后来发现 9.9 元只是第一个月的价格,此后每个月要 108 元,贵到吓人。
    忽然想到,能否把安卓手机作为一个局域网内的完整功能的设备呢?于是摸索了一下,下载了 ES 浏览器,结果发现好用到爆,易用性比 WinSCP 还要好,作为中转进行 FTP 对 FTP 的数据传输简直方便极了。
    此前只是把 Android 作为一个玩具一样的设备,没想到起实用功能比 Linux 还要好很多,这也大大拓宽了我对于不同操作系统的成见,认为作为服务器 Linux 功能比 Android 强大,事实上,由于 Android 背后庞大的商业市场,大大刺激了优秀软件的开发,使得其很多应用的功能不仅仅 Linux 做不到,甚至 Windows 也做不到。
    然而用安卓手机做服务器的话,那我平时用啥呢?到买一台便宜的安卓做服务器吧!上京东找了一下,最便宜的安卓只要 99 元,但感觉系统还是 2.3 的样子,没有可玩性,再往上差不多和树莓派差不多价格了。
    各种方法被价格封锁住,毕竟穷学生,那么到底有啥办法呢?

    幡然醒悟, VPS 中转
    我忽然发现,此前的我被局限住了,一直想着在局域网内建服务器做文章。为啥不能眼光开阔一点,就用我现有的 VPS 作为中转服务器呢?这不恰恰是我所需要的?
    于是研究了一下 Linux 系统的 FTP 功能,发现命令行比较麻烦,有类似 WinSCP 的对应 FileZilla ,然而需要传输图形界面。
    此前传输过图形界面,无非是 Putty+Xming ,设置 putty 本地 SSH 的 X11 的端口为本地端口 127.0.0.1:0.0 (很多教程里用 localhost:0.0 ,但有时候 localhost 不解析,还是用 127.0.0.1 比较保险),然后就能打开远程界面的窗口,此前在教育网内部的服务器都没啥问题,但 VPS 的图像完全传不过来!
    这就是我之前所说的,由于我们都是通过教育网网关连通公网的,没有公网 IP ,只能通过内网穿透。要实现内网穿透,这就需要使用 Cygwin ,于是我就干脆玩个彻底,装个 Cygwin/X 玩玩,再在 VPS 上安装桌面 Xcfe4 (最小巧的桌面内核)和 VNCServer ,通过 VNC 实现远程图形控制,这样就能获得和阿里云一样的体验啦,不过不是 Windows Server 2012 而是 Ubuntu 16.04 。

    Cygwin/X ,比 Linux 的 Wine 更强大
    Cygwin 只是为了能够在 Windows 环境下实现 Linux 的控制操作,非常好用,而且运行性能远高于虚拟机,和微软自己开发的 bash in Windows 相似。
    在官网下载安装包后进行联网安装,注意如果一路点 next 得到的只是最基本的功能,包括 ssh 功能都要额外装,因此安装包不能删,每次要添加新功能的时候都要打开安装包选择一次,因此安装包就是 Cygwin 的 apt-get 。
    为了安装图形界面,需要的包参考官方文档:
    http://x.cygwin.com/docs/ug/cygwin-x-ug.pdf
    我的方案更简单直接,就是结合 Cygwin+Xming ,首先要补充安装包 xorg-server , xinit ,为了实现 ssh 控制再安装 openssh ,为了验证安装的图形效果,装了一个 xterm 。
    打开 Xming ,打开 Cygwin 命令行,设置
    export DISPLAY='127.0.0.1:0.0'
    (可以通过 echo DISPLAY 查看当前的值)
    继而打开 xterm 即可实现图形界面的展示(然而并没有装桌面,要实现桌面控制比这复杂)。
    由此本地的图形界面没有问题,我想要再验证一下是否能通过 Cygwin 传输 VPS 的 GUI ,经实验失效,可见不是本地设置的问题,而是公网 IP 不能直接向本地传输。

    内网穿透, VNC 实现完整的 VPS 图形界面
    这个目的的实现全部依靠 DO 的官方教程,写得非常详细,原理也讲得清楚:
    https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-16-04
    除去在 VPS 的 Xcfe4 、 VNCServer 组件安装、配置操作,输入 vncserver 使其运行以外,在本地要进行一些设置。
    在本地 Cygwin 输入的命令:
    ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
    就是一个内网穿透工作,将本地电脑的 5901 端口投射到远端服务器。
    之后打开本地的 VNC Viewer ,输入 127.0.0.1:5901 即可实现远程控制。(每次如果显示失败,可以先试着再穿透依次,实在不行重启一下 VPS )

    未实现的路由器内网穿透,通过 FileZilla 与 Bypy 结合
    从而可以使用远程控制使用 Linux 下的 FTP 管理软件 FileZilla 了,通过 FileZilla 轻松登陆 Seedbox 的文档进行下载。这样文件就到达了 VPS ,然后用 VPS 登陆到我的智能路由器的 FTP 就妥妥了。
    然而这恰恰造成了很大麻烦,需要智能路由器内网穿透的工作,虽然有官方内网穿透,但懒得捣鼓了,于是想了一个替代的办法,就是通过百度云,毕竟自己是有百度云 SVIP 的人,国内网速还不错,虽然不如局域网直接从智能路由器取数据,但也能接受了。
    于是采用了 bypy :
    https://github.com/houtianze/bypy
    一个 Python 编写的可在 Linux 运行的百度云界面,有简易的图形界面 bypygui 。上传到百度云的“我的应用数据 /bypu/”文件夹内。由于百度云有的文档可以实现秒传,因此对 VPS 的上传负担可以接受。
    这种方案基本是能满足的要求了,如果更进一步,利用路由器内网穿透,进行 Seedbox 到路由器的 FTP 直传,那是更好不过,有时间再折腾吧。
    msg7086
        4
    msg7086  
       2017-03-21 01:00:16 +08:00
    有试过用 FTPFS 之类的东西挂在 VPS 上直接调用 Bypy 上传么。
    duIT
        5
    duIT  
    OP
       2017-03-21 01:18:14 +08:00 via Android
    咦好像很神奇,有时间试试看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1530 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:26 · PVG 01:26 · LAX 10:26 · JFK 13:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.