我有些服务器被墙了,除了通过跳板机连接,还有什么好的办法吗?当然有了,使用Cloudflare Zero Trust即可。我们不仅可以使用ssh客户端,甚至还可以通过浏览器访问。除了SSH协议之外,RDP、SMB甚至任何奇奇怪怪的协议都可以。
安装并连接cloudflared
首先还是要想办法连接到被墙的机器,下载cloudflared
https://github.com/cloudflare/cloudflared/releases
在网页上Access – Tunnels中创建一个 Tunnel,然后按照提示安装。
连接到服务器
Cloudflare提供了三种通过tunnel连接到服务器的方式,第一种是通过客户端安装WARP,第二种是通过客户端安装cloudflared
,第三种是直接通过浏览器访问。
通过WARP连接服务器
这种办法其实和《使用Cloudflare Zero Trust创建大内网》一样,区别只是创建大内网时,我们内网的设备写的是局域网IP,而这里则可能会写公网IP。但是本质上没有区别哒!
在网页上Tunnel中,配置Private Network,填入服务器的IP。如果类似GCP那种分配的内网IP,直接写内网IP对应的段也可以;否则直接写公网IP也可以。
老生常谈,创建Profile,表达式写比如说 ssh@dmesg.app
Split Tunnel选择include,然后添加服务器的IP。
使用WARP连接,输入邮箱进行验证
WARP连接成功之后,就会发现能SSH啦,再也不怕GFW了
通过cloudflared access连接
在网页上,配置Public Hostname,下面Service Type选择SSH,URL写127.0.0.1:22
,如果你想通过这个跳到其他服务器,那么就写IP:22
客户端需要安装cloudflared,先登录 cloudflared login
然后修改SSH配置文件 ~/.ssh/config
Host ssh.dmesg.app # 记得修改cloudflared路径 ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
然后再ssh username@ssh.dmesg.app
就可以啦
当然如果不想改config那么也可以
cloudflared access ssh --hostname ssh.dmesg.app --url 127.0.0.1:10022
然后另外一个窗口
ssh root@127.0.0.1 -p 10022
效果是一样的!
只要你的脑洞足够大,甚至可以通过cloudflared access
去连接任意TCP协议,甚至连UNIX套接字都可以哦
使用浏览器连接
同上,Public Hostname创建一个SSH服务,比如说域名叫 browser.dmesg.app
然后 Application – Add Application – Self-hosted,application sub domain 同样写 browser.dmesg.app
然后创建policies,和以前的方法一样,如果只是测试用甚至可以Everyone
下一步Additional Settings中,选择SSH
浏览器打开链接就可以了,注意这里的用户名是服务器的用户名,比如root
,并不是进行邮箱验证的 xxx@dmesg.app
下一步输入认证信息即可登录。根据服务器sshd配置不同,选择密码或者key登录即可。