科学上网之 SSH 动态转发相关


没啥深刻的东西,就是个人的备份 通过ssh动态转发科学上网相信都很熟悉了,只是本人在使用的过程中遇到些不方便的问题,把注意事项记录下


ssh端口转发相关原理可以看这里

直接ssh -D <localport> <username>@<server>,即可通过海外server科学上网,但是关掉当前中断后就会退出……为了保持会话,可以试试 ssh -D <localport> -fN <username>@<server>

当然更推荐screen,这个是很强大的工具,除了分屏,就是session管理了 我们可以在自己建立的session里,启动转发,然后detach掉即可 下次可完整恢复会话,非常方便!

screen -S <yourscreen>
do what you want...
crtl + a d
exit terminal

下次想再次进入

screen -ls 找到screen id
screen -r <id>恢复

还有,上述动态转发还可以脚本化,具体的限制是有输入密码这个过程,可以通过下面的方式解决:

  • 把public key加入到authorized_keys
  • 用expect,下面参考这个
#!/usr/bin/expect
set timeout 60


spawn /usr/bin/ssh -D <localport>-g <username>@<server>
expect {
"password:" {
send "<password>\r"
}
}
interact {
timeout 60 { send " "}
}

使用的时候,建议配合相应浏览器插件,需要全局的时候可以试试proxychains这个工具

最后,如果你用的不是linux,参见这里

补充:如果linux,使用过程难免会断掉,需要有自动重连机制,可以试试

curl -s -I http://www.google.com/ –socks5 localhost:7070 > /dev/null
[ $? -gt 0 ] && ssh -fN username@hostname -D 7070

参考这个