其實這個技術一點都不難,只要有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那邊跟戰場沒兩樣,還是來這邊比較能夠好好討論
不知道各位對於這樣的作法有沒有什麼想法?