Colin Cheng

15 posts
android

通过 ssh 命令临时地使用 Android 作为 SOCKS 4/5 服务器

最近需要在一台 Linux 的 PC 上访问 Wikipedia,但不好在这台电脑上安装一些软件。刚 好自己的手机开启了 VPN 可以正常访问到 Wikipedia。然后无意间在浏览 ssh man page 时,看到可以在 Android 机上使用 ssh 的 -R [bind_address:]port 选项来开启一个 SOCKS5。这样一来,似乎就可以在 PC 上通过 SOCKS5 转发请求到 Android 机上,然后 再通过 Android 开启 VPN 来访问 Wikipedia 了。

使用 GnuPG(OpenPGP) ECC(ed25519/ecc25519) 密钥作为 ssh 登录密钥

本文的操作在 Arch Linux 下进行,没有在其他 Linux 发行版下测试过,因此无法保证其他的 Linux 发行版也可以正常工作。 首先生成相应的公私钥 生成主密钥 gpg --full-gen-key --expert PS: 这里因为要生成 ECC 类型的密钥,因此需要使用 expert 模式才可以 Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4)

WireGuard

WireGuard 配置和上网流量优化

本文涉及到 WireGuard 的使用介绍、国内外流量的分流等内容 WireGuard 安装在使用 WireGuard 之前,需要分别在服务器和本地安装。 由于本人的服务器上使用 debian 9、本地使用 Arch Linux,因此这里只给出这两种系统上的安装方式,其他系统上的安装可以在官网找到。 Debianecho "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' >

ssh

使用 ssh 连接相同 ip 不同主机时的 fingerprint 冲突问题

最近将家里的路由器刷了 openwrt,当使用 ssh 连接路由器时,提示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The

centos7

在 KVM 上安装 CentOS 7 过程记录

最近,由于 Crissic Solutions 关闭了服务,导致我不得不又要去寻找其他便宜点的 VPS 了,刚好 hostdo 有优惠,有个 KVM 的套餐价格与之前 Crissic 的一样。因此有买了一年。 刚下订单后,服务没立即开通,可能需要审核,等了比较久,于是发了一个 Ticket,在第 2 天登录后,发现已经开通了。购买时机房选洛杉矶的,从广州 ping 了下 time 值只有 160-180ms 左右,已经不错了,之前的 Crissic 基本上在 200ms 以上的。 由于在下订单选择操作系统的时候,选择了 None

rollup

Rollup: Error parsing /tmp/example.js: The keyword 'await' is reserved (1:18) in /tmp/example.js

解决方法 在 rollup 的配置(如 rollup.config.js)里加入: export default { //..., acorn: { allowReserved: true, }, //..., } 错误分析 一般出现这种错误是由于 js 里使用了保留字(Reserved Word)作为函数名或者变量名导致的, 因为 rollup 使用 acorn 将 js 解析成 AST,而在 acorn 中,只有 ecmascript 3 才被允许使用保 留字作为函数名或变量名,更高版本的 ecmascript 默认会报错,除非使用 allowReserved: true 选项来明确允许使用。

nodejs

非 root 用户安装和配置 NodeJS

本文主要针对 Linux 非 root 用户,在没有 root 权限下如果安装及配置 NodeJS(注:这里安装的是官网上已经编译好的二进制包)。 首先到 NodeJS 的官网(https://nodejs.org/en/download/)下载对应的已经编译好的 二进制包。 这里以 CentOS 6 32bit 为例,安装 NodeJS 的 LTS 版本: 下载 Linux Binaries 32bit 版本: curl -o node-v4.4.2-linux-x86.tar.xz https:

postgresql

pg_restore: [directory archiver] could not open input file "xxx/xxx.dat": Value too large for defined data type

最近将本地的一个数据库搬到 VPS 上,在导入时出现了一个”Value too large for defined data type“的错误。通过 Google 搜索后发现没有实际的解决方案,但大致了解了下(http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#Value-too-large-for-defined-data-type)出错的原因,可能是因为 VPS 的系统是 32bit,而其中需要导入的一个 xxx.dat.gz 文件的太大导致的。 由于在本地使用 pg_dump -Fd 来导出,该选项导出为文件夹,其中数据库的每个表的数据为一个经过 gzip

canvas

获取鼠标在 canvas 中的位置

一般情况 一般情况下,如果需要在 canvas 中获取鼠标指针坐标,可以通过监听鼠标的 mousemove(如果只需单击时的坐标,可以用 click)事件。 当事件被触发时,我们可以获取鼠标相对于 viewport 的坐标(event.clientX, event.clientY)。 同时,我们可以通过 canvas.getBoundingClientRect() 来获取 canvas 相对于 viewport 的坐标,这样我们就可以计算出鼠标在 canvas 中的坐标。 canvas.addEventListener("click", function __handler__(evt) { var x = evt.clientX; var

fc-match

fc-match 使用简介

在修改 gvim 的字体时,发现有些字体显示得不一样,于是查看了 fontconfig 的配置文件 ~/.config/fontconfig,但未找到问题所在。 于是想通过查看字体的加载顺序来进行排查,通过浏览 fonts-conf 及 google,发现可以 通过 fc-match 来查看字体的匹配情况。但 man fc-match 的介绍非常简单,导致刚开始 不知道怎样用,后来通过 man 了 fontconfig 的其他工具(fc-list)以及 fonts-conf, 大致了解了如何使用它,本文将简单的介绍下。 从 fc-match -h 的结果看: usage: fc-match [-savVh] [-f FORMAT]

virtualbox

捕获 Virtualbox 虚拟机的网络流量

本文使用 wireshark 进行抓包(或查看),操作系统为 ArchLinux。 除了最后一个方案,本文的其他方案都需要一个 TAP,最终使用 wireshark 来捕获 Virtualbox 的流量也是使用这个接口的。 以下是创建一个名为 tap0 的 tap: # ip tuntap add dev tap0 mode tap user ${USER} $ ip tuntap show tap0: tap UNKNOWN_FLAGS:800 user 1000 # ip link set dev tap0 up 方案一:

centos7

在 CentOS 7 中修改 sshd 的端口

编辑 /etc/ssh/sshd_config 添加/修改 Port XX 行(把 XX 改成需要设定的端口) 查看防火墙是否开启 systemctl status firewalld.service 如果开启,需要在防火墙上开放上面的端口: # 先查看是否已经添加了 firewall-cmd --zone=public --list-port # 如果添加了该端口,可忽略这条命令。把 XX 改成实际需要修改的端口 firewall-cmd --zone=public --add-port=XX/tcp --permanent # 重新加载 firewall-cmd --reload 查看 SELinux 是否开启 sestatus