说明:sish
是一个SSH
服务器,仅用于远程端口转发,可以快速将本地端口暴露在外网,作者声称其为Servo
/Ngrok
替代方案,仅使用SSH
的HTTP(S)
、WS(S)
、TCP
隧道连接到他们的localhost
服务器,该工具和Servo差不多一样,不同就是Servo
官方提供了免费的SSH
客户端,而sish
作者提供的客户端貌似因为滥用关闭了,所以就需要我们自己搭建了,这里就水下手动安装。
手动安装
Docker
虽然方便很多,但也有人会喜欢手动安装,这里作者没直接给出二进制文件,所以就需要我们手动来构建二进制文件了。
1、安装Go
这里由于需要新版的Go
环境,所以这里就使用Go
二进制包安装环境,下载地址→传送门。
然后根据自己的服务器架构下载对应的最新安装包,一般可以直接使用命令:
wget -O go.tar.gz https://dl.google.com/go/go1.13.3.linux-386.tar.gz
wget -O go.tar.gz https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz
tar -zxvf go.tar.gz -C /usr/local
mkdir $HOME/go
echo 'export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> /etc/profile
source /etc/profile
go version
2、安装sish
git clone https://github.com/antoniomika/sish
cd sish
go install
这里提示-bash: git: command not found
的,可以先使用命令:
#CentOS
yum -y install git
#Debian、Ubuntu
apt install git -y
3、运行sish
运行参数这里就不贴了,直接参考上面Docker
安装最下面的全部参数就行了。
先解析一个主/泛域名到服务器ip
,比如解析urdomain.com
、*.urdomain.com
到服务器ip
。
这里就贴个大概需要使用的参数,其它的根据需求自行修改,使用命令:
sish -sish.addr=:3333 -sish.http=:80 -sish.domainurdomain.
com -sish.forcerandomsubdomain=false -sish.bindrandom=false -sish.redirectrootlocation https://www.urdomain
.com -sish.keysdir=/sish/pubkeys -sish.pkloc=/sish/keys/ssh_key sish -sish.addr=:3333 -sish.https=:443 -sish.http=:80 -sish.domainurdomain
.com -sish.forcerandomsubdomain=false -sish.bindrandom=false -sish.httpsenabled=true -sish.redirectrootlocation https://www.urdomain
.com -sish.keysdir=/sish/pubkeys -sish.pkloc=/sish/keys/ssh_key -sish.httpspems=/sish/ssl
部分参数详解:
-sish.addr=:3333 #ssh监听地址,这里为3333
-sish.forcerandomsubdomain=false #是否强制随机子域,这个建议关掉
-sish.bindrandom=false #是否随机绑定端口,这个建议关掉
-sish.domainurdomain
.com #使用的域名 -sish.redirectrootlocation https: -sish.httpspems=/sish/ssl #泛域名SSL证书存放路径,证书命名格式fullchain.pem和privkey.pem -sish.keysdir=/sish/pubkeys #pubkey auth的公共密钥存放文件夹 -sish.pkloc=/sish/keys/ssh_key #SSH服务器私钥
这里/sish/ssl
、/sish/pubkeys
、/sish/keys
目录需要自己提前创建下,使用命令:
mkdir -p /sish/ssl /sish/pubkeys /sish/keys
4、开机自启
如果你使用手动命令没问题了,先使用Ctrl+C
断开命令。
再新建systemd
配置文件,适用CentOS 7
、Debian 8+
、Ubuntu 16+
。
#修改成你手动运行命令的全部参数
command="-sish.addr=:3333 -sish.http=:80 -sish.domain urdomain.com -sish.forcerandomsubdomain=false -sish.bindrandom=false -sish.redirectrootlocation https://www.urdomain
.com -sish.keysdir=/sish/pubkeys -sish.pkloc=/sish/keys" #将以下代码一起复制到SSH运行 cat > /etc/systemd/system/sish.service <<EOF [Unit] Description=sish After=network.target [Service] Type=simple ExecStart=$(command -v sish) ${command} Restart=on-failure [Install] WantedBy=multi-user.target EOF
启动并设置开机自启:
systemctl start sish
systemctl enable sish
最后CentOS
系统建议关闭防火墙使用,或者打开部分端口也行,关闭命令:
service iptables stop
chkconfig iptables off
systemctl stop firewalld
systemctl disable firewalld
像阿里云等服务器,还需要去安全组那里开放下端口。
使用
使用要求:可以使用SSH
,并且能连接到互联网,Linux
、Windows
等系统都行。
以下所使用的urdomain.com
为上面配置好的客户端域名地址,自行修改成自己的即可。
1、转发HTTP(S)
将本地3000
端口穿透到公网中,使用命令:
#要转发其它端口的自行替换
ssh -p 3333 -R 80:localhost:3000 urdomain.com
第一次如果有提示,选择yes
即可,之后会为你随机生成一个urdomain.com
的二级域名,然后就可以使用浏览器间接访问本地的localhost:3000
了。
如果要指定二级域名,可以使用命令:
#这里默认为no1.urdomain.com,自行替换即可 ssh -p 3333 -R no1:80:localhost:3000 urdomain.com
此时你就可以在外网使用no1.urdomain.com
访问你本地的localhost:3000
了。
2、转发TCP
将本地6789
端口穿透到公网的9876
端口中,使用命令:
#可以自行设置公网端口,这里默认6789,如果你要转发SSH端口,那就改成你的SSH端口
ssh -p 3333 -R 9876:localhost:6789 urdomain.com
这里只说了下简单用法,客户端我们还可以设置国家/地区、IP
白名单等,使用参考→传送门。