2017年3月

今天入职新公司,但是发现网络访问并不自由。。公司内的 WiFi 想要访问外网,要使用公司的内部代理,这就蛋疼了,shadowsocks 都用不了了。但是我发现 ssh 可以直连前几天买的日本服务器,经龙哥提醒,可以使用 ssh 来做代理从而突破限制。下面就是具体方法了。

其实命令很简单
通过 ssh -f -NT -D 127.0.0.1:7001 username@host 在本地开一个端口,然后使用 Proxy SwitchySharp (Chrome 扩展) 设置一个 socks5 代理即可(代理设置为 127.0.0.1:7001)。当然这个有一个前提就是,要把自己电脑的 public_key 放到远程服务器,不然要输入密码,体验就大打折扣了。

对各个参数的解释参考了这里,在此对博主表示感谢。

  • -f 表示后台执行ssh指令
  • -D 表示通过动态端口转发方式打开 ssh 通道
  • -N 表示只连接远程主机,不打开远程shell
  • -T 表示不为这个连接分配TTY
  • -NT 两个参数可以放在一起用,代表这个SSH连接只用来传数据,不执行远程操作

虽然命令足够简单,但是作为一个懒惰的程序员,怎么可能做重复的事情,所以要写一个 alias 来简化它,直接贴代码。

# ssh proxy
alias jpproxy='ssh -f -NT -D 127.0.0.1:7001 username@host &> /dev/null'
alias jpproxystop="ps aux | grep username@host | grep -v grep | awk '{print \$2}' | xargs kill"

这是我用日本服务器搞的 ssh 代理。
第一个 alias 用来开启代理
第二个 alias 用来关闭代理,$xxx 在 shell 里代表变量,所以要用 \ 转义 $

至此我们已经成功翻过两堵高墙,来到了真正的互联网,顿时感觉整个人都自由了。

但是还有个问题,目前代理并不是全局的,之后要看下怎么搞成全局,因为电脑版微信收到的图片都看不了。。。头像也不出来


更新:
可以通过 proxifier 来指定哪个软件走代理
Google 查的注册码 P427L-9Y552-5433E-8DSR3-58Z68 软件还是有点小贵的...

慢慢更新

  • 去掉对 xxx.php 文件的跟踪
    git rm --cached xxx.php
  • merge 的时候合并多次 commit 为一个
    git merge --squash branch
  • 删除远程分支
    git push origin :branchName
  • 查看修改过的文件列表
    git diff --name-only commitId
  • git fetch 之后,遇到下面这种错误

    error: cannot lock ref 'refs/remotes/origin/xxxxx': 'refs/remotes/origin/xxx' exists; cannot create 'refs/remotes/origin/xxxxx'

执行 git remote prune origin

  • 查看某次 commit 修改的文件
    git show --pretty="" c9a60ef4bc1c4337293a4ea95bb8dd9407a3e306 --name-only
  • 查询某人的提交历史
    git log --since=2019-01-01 --until=2019-06-30 --author="jiayx" --pretty=format:"%h - %an, %ad : %s"
  • 统计代码行数
    git log --author="jiayx" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -