Mobaxterm 通过 Session Manager 访问 AWS EC2 实例

需求

在 AWS 上部署了一个项目,包含四个 EC2 实例。其中一个为堡垒机实例,另外三个为业务实例。在子网的安全组中,关闭了 22 端口,只能通过 AWS 网页上的 Session Manager 访问堡垒机,再跳到其它业务机上。但 AWS 网页版的终端使用起来有很多限制,比如不能“选择即复制”,不能“右键快速粘贴”,会话无法保活等。 因此,希望可以使用桌面终端,比如 Mobaxterm,通过 Session Manager 来访问 EC2 实例。

解决方案

通过 AWS Command Line Interface(AWS CLI) 连接 Session Manager,经由 System Manager Agent(SSM Agent) 将所有操作转发给 EC2。

使用 Session Manager 的前提

  • EC2 实例安装了 SSM Agent
  • EC2 实例绑定了 IAM Role AmazonSSMManagedInstanceCore
  • EC2 可以直接或者通过 Session Manager 的 VPC Endpoint 连接 Session Mananger 服务 具体参照 AWS 官方文档进行设置。

IPTV PHP 爬虫片段

现在有很多线上 IPTV 服务,限制只能在浏览器的播放器观看,可以通过 PHP 爬取对应的流媒体源,来实现在其他应用或电视上观看。

IPTV 源分类

不限制 Referer

这类源最简单,直接 PHP 发送请求获取到流媒体的链接。

iptv-sample-a.php 代码片段

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
    function get($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

通过 SSH 访问 GitHub

需求

公司有自建的 GitHub 企业版,必须通过 VPN 或者 SSH 跳板机才能访问网页,如何在客户端通过命令行存取远端代码库呢?

示例

GitHub 企业版地址:github.abc.com 跳板机:jump_host 跳板机用户名:jump

解决方案

公司的 GitHub 启用了大文件存储模式 Git-LFS, checkout 代码库的时候,客户端需要先通过 SSH 取回库的内容(包括大文件的占位符),再通过 HTTPS 取回对应占位符的大文件。因此在配置跳板机时,需要同时考虑 SSH 和 HTTPS 两种协议的代理转发。

利用 GitHub Actions 自动编译发布基于 Hugo 的网站

需求

自从把网站从 Wordpress 转成 Hugo 并托管在 GitHub 之后,一直使用 Travis CI 来自动编译部署更新。 距离上次更新又过了一年多,昨天想发个牢骚,感叹下时事多艰,结果发现 Travis CI 已经删除我之前的代码库配置。

解决方案

在 Hugo 的官方文档网站看到推荐用 GitHub Actions 来完成类似的工作 link。看起来不麻烦,开干。

通过 VPN 远程办公

需求

作为一名实施人员,通常情况下需要通过各种 VPN 连接到公司和客户的工作环境来完成任务。尤其是疫情的影响,完全在家工作,对 VPN 的利用就更重了。

但是,VPN 装多了,各种虚拟网卡驱动相互之间不一定能好好兼容,即使是 Windows 10 也很容易蓝屏,要是不幸发生在工作过程中,尤其是更新生产系统,那就有得事情做了。

解决方案

我能想到的解决方案,还是虚拟机。把所有的 VPN 都装在虚拟机里边,即使不幸虚拟机挂了,也可以在几分钟内恢复一份快照,而且这个异常完全不会影响到宿主机的系统。

在 Windows 上,常用的虚拟机解决方案有

  • 商用的 VMWare
  • 免费的 Virtualbox
  • Windows 10 自带的 Hyper-V

在 Windows 10 ver20H2 之前,Hyper-V 和其他两个解决方案是互斥的,如果启用了 Hyper-V,那么 VMWare 和 Virtualbox 都不能正常启动。更新到 20H2 之后,它们就可以共存了。