其实这个技术一点都不难,只要有ssh-key 再加上一行指令就可以解决
只是连线频宽会受限,然后或许有一些安全性的考量
作法如下
1. 开启 NAS 的SSH登入功能
详细作法请参阅各家NAS 说明书...
2. 用SSH 登入NAS
ssh [email protected]_IP
3. 在NAS上产生 SSH-key
ssh-keygen -t rsa -b 2048
如果不需要再针对sshkey做保护,那就直接按enter跳过就好
4. 在NAS 上输入以下指令
ssh -R 80:localhost:443 ssh.localhost.run 2>&1
指令中的443 是指NAS的管理界面埠号
以synology 来说就是 5000 (好像是吧) ,QNAP 是多少我忘记了
执行完成后,画面上会跳出讯息,给你一串网址
开启那个网址就可以进入你的NAS管理界面
[email protected]:~/git/host$ ssh -R 80:localhost:7777 ssh.localhost.run 2>&1
===============================================================================
Welcome to localhost.run!
Follow your favourite reverse tunnel at [https://twitter.com/localhost_run].
**You need a SSH key to access this service.**
If you get a permission denied follow Gitlab's most excellent howto:
https://docs.gitlab.com/ee/ssh/
*Only rsa and ed25519 keys are supported*
To set up and manage custom domains go to https://admin.localhost.run/
More details on custom domains (and how to enable subdomains of your custom
domain) at https://localhost.run/docs/custom-domains
To explore using localhost.run visit the documentation site:
https://localhost.run/docs/
===============================================================================
** your connection id is feadb278-d0b8-4597-a40b-35a1b0fabe45, please mention
it if you send me a message about an issue. **
48b29b1e4d7a42.localhost.run tunneled with tls termination,
https://48b29b1e4d7a42.localhost.run
Connection to ssh.localhost.run closed.
个人分析优缺点如下
优点
1. 不用在你的Firewall/分享器上面开port
因为没有开port,所以从internet 上,不透过那个URL 是无法存取到你的NAS的
而且那串网址的第一段基本上是个乱数编码,就算有人针对这个localhost.run
去扫描,也很难能够找到,再者,这只是一个“临时”的网址,只能存活数小时
要被攻击的机率就更低了
如果再搭配上二阶段认证,要临时在外面连回NAS,不失为一个替代方案
2. 不用安装有的没的软件
从头到尾就都透过SSH这个基本的指令,不需要去管FW上面怎么设定
缺点
1. 连线频宽、速度受限
因为连线路径的改变,所以速度明显会降低
2. 网址不固定
如果是使用localhost.run的免费服务,那个网址是不固定的
而且只会存在几个小时,也就是说几个小时候,这个网址就无法存取了
(不过我昨天测试,一直连线到现在,我的网址都还活着,不知道规则是啥..)
当然,你可以付费申请固定网址,各家业者收费标准不一
localhost.run 最低是3.5 美金一个月吧
如果有付费,那就可以把指令写入到NAS,开机自动执行
就可以在外面用这串网址连线了
其实我觉得,或许S&Q&A 可以考虑自己弄这种服务
买NAS 就送基本的ssh tunnel service
免费的就用机器的mac或SN作为hostname , 然后只开放受限的频宽、速率
付费的用户,就依照等级调高频宽、速率,然后可以自订hostname
只是这种服务很吃服务器的频宽,这是一笔不小的固定沉没成本
要从付费用户收到足够的费用来cover,我想很困难
然后厂商还要维护这台服务器,厂商愿意这样做吗?
而且我已经买NAS了,还要我额外付费换取“更安全”的服务?
那我买NAS干嘛?我去买google/dropbox/backblaze不就好了?
其实我还有另外一种想法,可以结合SDN,建立一组专属用户的VPN
vpn走wireguard方案,外部机器要连线进来,需要使用者允许
不过这个牵涉的就更广了,就先不提了吧
最近FB那边跟战场没两样,还是来这边比较能够好好讨论
不知道各位对于这样的作法有没有什么想法?