ssh不间断提供跨越长城服务
Page content
好吧,我首先承认我是一个重度Google服务依赖者。所以每次看到连接被重置我就很崩溃。当初也是基于此目的而买的VPS。不过由于VPS不支持VPN,另外我也觉得VPN设置路由比较麻烦(需要区分国内国外的网站),所以一直没有换支持VPN的VPS。
这几年一直都是使用ssh -D提供服务。由于我不看视频,因此勉强觉得速度不是问题。由于我一直觉得windows下用putty/plink进行ssh比较慢(也许是心理作用),所以我一般在linux服务器上建立ssh通道,然后通过浏览器设置socks5代理进行穿越。
由于某些原因,ssh -D运行后总是自己就断了,也许是网络原因,也许是某些“特殊原因”。总之我需要提供一个持续的ssh服务。
这里有一种方法。我试了下,不好用(主要是我没有成功)。于是我就想使用rsa public key来进行登录。
第一步,创建用户:
sudo useradd -m -U gfw
查看下用户:
cat /etc/passwd|grep gfw gfw:x:1001:1001::/home/gfw:/bin/bash
现在使用此用户登录
sudo su - gfw
第二步,生成密钥:
ssh-keygen -t rsa -f ~/.ssh/id_rsa_gfw -q -P ""
这样就生成了一个不需要密码验证的密钥对。 我们将密钥对加入认证文件。
cat ~/.ssh/id_rsa_gfw.pub >> ~/.ssh/authorized_keys
查看下:
cat ~/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+r9+2ei+80lee9xbi3FmDcpBIVip1MQLXEdutvMXMnefi7FSq OdCJYrmxFNzhtLDzBLLrQhTK9Tu7VCCXlDlVErKsRfF8tEr7w4/f8jEb+I3ZlkvKVgmlMx205pkX+6VW16Gc9M9dHhZj3POhqzcpNzN0o3 e0qZOVzO+rwbj2L17hBLNpkmOFanSd+bzz0j8TjJHz7uGXrNU6w8vMVqjlf/N0wFCFKavyf0jT7YdUjLo4aErbLfFrjB9ed3nI/Vdv549y ANnvh4ldNf7dFUijH7nXjkrA0Gnhytfp7a5EhJ2FsBkEJrwSbPFsju/GLssQ0suOtCLdmUXhAOJqUgkN gfw@myvps
第三步,循环登录:
以上两个步骤是在vps上进行的。这第三步是在客户端进行的。 我们将vps上的私钥拷贝下来。
写一个登录脚本/bin/pssh。
#!/bin/bash
loop="true" while [ -n "$loop" ] do ssh -N -D 127.0.0.1:11111 -i ~/.ssh/id_rsa_gfw gfw@myvps done
这里使用while死循环一直执行此命令。一旦上一个ssh命令退出了,立即创建一个新的ssh命令。
- -N 表示不登录shell
- -D 表示绑定的ip以及端口地址
- -i 表示使用我们制定的私钥,而不是默认的id_rsa
- 最后就是vps的用户名以及ip地址了
接着运行此脚本即可。 为了安全起见,此用户gfw只是为了ssh穿越防火墙,不作为登录用户。因此关闭此用户的登录功能。
修改vps上的文件/etc/passwd:
- gfw:x:1001:1001::/home/gfw:/bin/bash
将gfw对应的登录shell bash修改为false,使用vi/vim修改即可:
- gfw:x:1001:1001::/home/gfw:/bin/false
现在运行此脚本,收工。
nohup pssh > /tmp/pssh &