[CentOS 7] 你說什麼?! 瀏覽器直接變身成 SSH Client 連上 Server

by 5/09/2016 0 意見

公司的 SSH Server 被防火牆擋住,不開放外部 IP 直接存取,偏偏我們又非得在遠端用 SSH Console 操作指令才行,這可怎麼辦才好 ...... ?!

不知道大家有沒有聽過莫非定律 (Murphy's law):
「如果事情可能會出槌,遲早一直會遇到。 (Anything that can go wrong, will go wrong.)」

那一次出遠門去聽技術研討會,就只帶著一支手機在身上,誰知才聽到一半,電話就來了,辦公室的 Linux Server 上有個服務掛了,這可嚇死寶寶了,偏偏寶寶身上沒帶電腦,可是寶寶不說 ... XD

東看西看,手邊能用的只有一台上網專用的 Windows PC。
登入的帳號是一般使用者,因為權限不夠,所以也沒辦法裝上 VPN Client 程式連回去,就算我準備了本來就不必安裝的 PuTTY、PieTTY 也沒輒。

最後只好悻悻然的,摸摸鼻子滾回辦公室去救火了,千金難買早知道,當初應該先把「那支程式」裝到 Server 上就沒事了....

啊? 是哪支程式這麼神奇???

它叫 Wetty,底層是使用 Google Chromium 用來模擬 Terminal 的 hterm 這支 JS Library 來實作,簡單的說,它是用 Java Script 寫成的,配合 Node.js 來執行,可以讓瀏覽器模擬成 SSH Client 程式。

透過它,可以走標準的 80/443 Port 或是任何自訂的通訊埠,導向到內部的 SSH Server 來操作。


開始安裝


啟用 EPEL 套件庫。
sudo yum -y install epel-release

把這些必要的相依套件安裝起來。
sudo yum -y install git nodejs npm

從 GitHub 把 Wetty 整個專案複製下來。
git clone https://github.com/krishnasrinivas/wetty

把它安裝到系統裡。
cd wetty
npm install

也別忘了把防火牆的通訊埠打開,這邊用的是 8080 埠。
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --permanent --zone=public --add-port=8080/udp
sudo firewall-cmd --reload


啟動服務


先確認一下 CentOS 7 的對外 IP。
ip address show

我們可以選擇走 HTTP 或是 HTTPS 來提供服務。

HTTP

直接啟動服務即可,-p 參數使用剛剛防火牆開啟的 8080 埠,如果要更換的話,別忘了也得修改防火牆的設定值。
node app.js -p 8080

要中斷服務的話,按 Ctrl + C 即可。

HTTPS

先搞定 SSL 金鑰和憑證。
openssl req -x509 -newkey rsa:2048 -keyout wetty-key.pem -out wetty-cert.pem -days 1825 -nodes

跟 HTTP 不同的地方只有增加了指定金鑰和憑證的路徑。
node app.js --sslkey wetty-key.pem --sslcert wetty-cert.pem -p 8080

在背景運作

配合 nohup 和 & 指令就可以安靜的在背景運作。
nohup node app.js -p 8080 &
nohup node app.js --sslkey wetty-key.pem --sslcert wetty-cert.pem -p 8080 &

要停止背景運作,則是用 pkill 指令來刪除行程。
pkill node


用戶端連線


最後就是用任何一個瀏覽器連上 Server 的 IP 位址和指定通訊埠。
http://192.168.88.153:8080
https://192.168.88.153:8080

有幾個重點要注意:
  • root 帳號無法登入,不過可以用一般帳號登入後,再用 su 切換或使用 sudo。
  • 千萬別重新載入網頁,Session 中斷後會被視同斷線。
  • 要從剪貼簿貼上文字的話,Ctrl + V 要連按兩次才有效。

HTTP

這邊可以看到的確用瀏覽器連上去 SSH Server。

HTTPS

因為自我簽發憑證不是正式憑證,所以會跳出警告訊息。

允許接受這張憑證,同樣的就可以用 Wetty 連上 SSH Server 來操作了。

...
......
.........
是不是突然覺得這篇文章好像沒什麼梗,真無聊!!!

那~~~~~ 最後的最後,
打開台面上覆蓋的魔法卡 - 「黑洞」,破壞場上所有的怪物,接著結束這個回合 ?!!!
(叔叔是有練過的,小朋友不要學 .... XDDD)


參考資料


圖片來源

  • http://www.thedealmatchers.com/customers-charged-up-to-600-to-switch-broadband-providers/
  • https://pixabay.com

更新紀錄

  • 2016/05/09 撰文

Heracles Jam,江湖人稱「海公公」

IT 技術家 - 創站部落客

一個常用 Windows、慣用 macOS、愛用 Linux 的 3C 阿宅
現職 MIS / 業界講師 / 資訊顧問 / 部落客

0 意見 :

張貼留言