The Wayback Machine - https://web.archive.org/web/20200919145315/https://github.com/izuolan/Pshell
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

这是一个 ICMP/IP 隧道管理脚本,从服务器到本地的全部操作,都可以通过这个脚本完成,目前完美支持主流 Linux 发行版(能运行最新版本 Docker 即可)。

可以用来做什么

  • 内网穿透(从外网访问内网的主机,比如在家里访问学校内网的资源)
  • 绕过认证(绕过一般的网络认证,比如绕过学校网络认证直接上网)
  • 网络代理(又双叒叕一个翻墙姿势,比如服务端放在海外就可以翻墙了)

功能

  • 支持服务器自动部署并启动,服务端遇到意外可以自动重启。
  • 支持本地自动部署并启动,支持 ICMP/IP 双协议隧道。
  • 支持断线自动重连。
  • 提供直观的监视器,可以实时查看连接状态。
  • 支持指定网卡分享 socks5 代理给他人。
  • 支持 socks5 转发为 http 代理。
  • 支持 TCP-BBR 算法,极大提高网速(需要内核支持)。
  • 密码认证。
  • 自动更新脚本。

待添加/修复功能

  • 支持自动修复 http 代理并允许指定 http 端口。
  • 自动启用负载均衡。
  • TCP-BBR 算法自动启用。
  • 添加 DNS Tunnel 功能。
  • proxy.list 文件最后一行不是空行会执行失败
$ ./Pshell.sh -h
------------------------------------------------------------------------------
   ___ ____ __  __ ____   _____ ____    ____  _          _ _ 
  |_ _/ ___|  \/  |  _ \ / /_ _|  _ \  / ___|| |__   ___| | |
   | | |   | |\/| | |_) / / | || |_) | \___ \| '_ \ / _ \ | |
   | | |___| |  | |  __/ /  | ||  __/   ___) | | | |  __/ | |
  |___\____|_|  |_|_| /_/  |___|_|     |____/|_| |_|\___|_|_|
  Email: i@zuolan.me                 Blog: https://zuolan.me
  一个隧道部署与代理管理的脚本。不加参数直接运行脚本即可连接。
------------------------------------------------------------------------------
  可选参数         -  说明
------------------------------------------------------------------------------
  -d (driver)    -  指定网卡(enp3s0|wlp2s0|eth0|wlan0),默认全部。
  -e (edit)      -  编辑配置列表。
  -f (fast)      -  快速模式(切换为 IP 协议隧道,速度更快,安全性降低)。
  -h (help)      -  显示帮助信息。更详细说明请阅读 README 文件。
  -k (kill)      -  杀死 autossh 和 sshd 进程(当连接长时间中断时使用)。
  -l (local)     -  安装本地守护容器。
  -m (monitor)   -  查看代理与容器运行的情况。
  -n (net)       -  统计代理端口的流量(-n set/unset 开启/重置流量统计)。
  -p (port)      -  选择本地 HTTP 代理端口(默认配置/etc/privoxy/config)。
  -s (server)    -  安装服务器守护进程。
  -u (update)    -  检测版本以及更新脚本。
------------------------------------------------------------------------------

安装

第零步、ssh 免密码设置

在本地生成一对密钥(邮箱替换为你的邮箱):

ssh-keygen -t rsa -b 4096 -C "i@zuolan.me"

把公钥(id_rsa.pub)内容复制粘贴到服务器的 ~/.ssh/authorized_keys 文件中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

第一步、服务器安装

执行 sudo ./Pshell.sh --server 即可自动安装并启动。服务器就一句话。

第二步、填写本地配置文件

现在回到本地,在运行脚本连接之前需要填写配置文件,模板如下。打开 proxy.list,然后按照下面的模板填写你的配置。

节点名称:容器名称:容器端口:Socks5端口:服务器IP:密码:密钥

例如:

广州:gz:8001:10001:123.45.67.89:pass1:~/.ssh/id_rsa.gz
香港:hk:8002:10002:123.45.67.89:pass1:~/.ssh/id_rsa.hk
青岛:qd:8003:10003:123.45.67.89:pass2:~/.ssh/id_rsa.qd
东京:to:8004:10004:123.45.67.89:password:~/.ssh/id_rsa.to

填完就可以进行下一步了,但如果你想更详细定义脚本变量可以在脚本头部中设置(不建议)。

第三步、本地电脑安装

执行 ./Pshell.sh --local 即可自动安装并运行。

使用

下面方法任选其一。

一、基于 SSH 的 Socks5 代理

1. ICMP 模式(限速150KB/s)

使用 ./Pshell.sh 直接运行脚本即为 ICMP 协议隧道,然后你可以使用配置文件中设置的 Socks5 端口(见安装步骤第二步)连接到外网。设置方法和普通 Socks5 端口使用一样。(例如 Google Chrome 中的插件 SwitchyOmega。)

2. IP 模式(不限速)

使用 ./Pshell.sh -f 即可启用 IP 协议的隧道,相比使用 ICMP 协议的隧道而言,IP 协议的隧道速度更快(有可能被云服务提供商误判为DDos攻击)。启用之后使用方式和 ICMP 模式一样,连接 Socks5 端口即可。

二、基于 IP 协议的端口映射

由于 SSH 的连接不是非常稳定,即便加了自动重连的方法还是会出现短暂的断网现象(自动重连大概要零点几秒),对于下载、游戏等过程有比较大影响,所以建议设置端口映射,由于 ICMP 协议速度不快,我就不写 ICMP 的端口映射了,用 ICMP 刷个网页基本不会感受到断网的情况。

由于脚本尚未完善,目前仅支持一台服务器的端口映射,如果你列表中有多台服务器,只会连接列表中的第一台服务器。

广州:gz:8001:10001:123.45.67.89:pass1:~/.ssh/id_rsa.gz为例,完成服务端和客户端的安装之后,在服务端启动一个代理(SS、SSR之类的你懂的软件),然后本地可以通过10.1.2.1这个地址连接到服务器的代理软件。

服务端完整示例:

# 安装 Pshell 服务端
$ ./Pshell.sh -s
# 安装 Shadowsocks 服务端
$ docker run -d --name ss -p 10001:10001 mritd/shadowsocks -s "-s 0.0.0.0 -p 10001 -k ss_password -m aes-256-cfb"

然后回到本地的电脑,安装好 Pshell 本地端之后(./Pshell.sh -l),打开 Shadowsocks 客户端,服务器地址为10.1.2.1,其他根据你的设置改变。

现在你可以使用 IP 协议稳定连接网络了。

扩展

一、Socks5 转 http

有些软件不支持 Socks5 代理协议,所以提供端口转换功。

使用 ./Pshell.sh -p <port> 可以指定其中一个 socks5 端口转换为 http 端口(转换后 http 协议代理端口为 8118)。

端口转换功能是保存起来的,不需要每次运行都指定它,除非你想重新指定转换的 socks5 端口。

二、分享 Socks5 端口

如果你想分享代理给他人用,可以使用 ./Pshell.sh -d <enp3s0> 参数指定网卡分享 Socks5 端口。

常用的网卡有 enp3s0|wlp2s0|eth0|wlan0 这些,使用 ifconfig 命令可以查看。

注意一点就是 Privoxy 的 8118 端口默认为仅 localhost 访问,如果需要他人访问,你还需要修改 localhost 为其他地址(例如 0.0.0.0),这样他人可以通过这个 http 端口访问外网。

三、重启 sshd 进程

在使用过程中可能会出现 sshd 进程崩溃的情况,这时候明明没有连接异常但死活连不上。

这个时候你可以使用 ./Pshell.sh -k 参数来杀死崩溃 sshd 进程并手动执行 ./Pshell.sh 重新启动 sshd 进程。

最后

使用 alias 指定脚本为特定命令即可更加方便启动。

其他功能自己发现(其实也没什么其他功能了),在脚本中可以看到全部可选参数。

About

ICMP/IP tunnel manager for Linux.

Topics

Resources

License

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.