什么是 Serveo
Serveo 是一個免費的內(nèi)網(wǎng)穿透服務(wù),Serveo 可以將本地計算機暴露在互聯(lián)網(wǎng)上,官方聲稱其為 Ngrok 的絕佳替代品。
Serveo 其最大優(yōu)點是使用現(xiàn)有的 SSH 客戶端,無需安裝任何客戶端軟件,即可完成端口轉(zhuǎn)發(fā)。
Serveo 工作原理很簡單:當(dāng)用戶通過 SSH 連接到 Serveo 時會與該網(wǎng)站建立一個遠(yuǎn)程代理,Serveo 隨后會生成一個 公共 URL,任何人都可以通過這個 URL 訪問你的本地計算機。
項目地址: https://serveo.net
Serveo 的使用非常簡單,只需要可以使用 SSH 客戶端并且能連接到互聯(lián)網(wǎng)的任意系統(tǒng)都行。比如:Linux、Windows、MacOS 等系統(tǒng),就算是 Android、iOS 也同樣沒問題。下面我們來看幾個最常用的使用實例:
將一個本地應(yīng)用的 8080 端口映射到公網(wǎng)中。
# 如果要轉(zhuǎn)發(fā)其它端口,只需替換端口為其它就可以了
$ ssh -R 80:localhost:8080 serveo.net
Hi there
Forwarding HTTP traffic from https://heryum.serveo.net
Press g to start a GUI session and ctrl-c to quit.
SSH 連接成功后,會隨機生成一個 serveo.net 二級域名。隨后你就可以使用瀏覽器訪問這個隨機生成的二級域名 heryum.serveo.net 間接訪問到本地計算機 8080 端口上的服務(wù)了。
SSH 初次和一個新服務(wù)器建立連接時會有提示,直接選擇 yes 即可。
如果你不想使用隨機域名,想指定一個固定的二級域名也是可以的。
# 這里指定為 ywzm.serveo.net,可以根據(jù)自身情況進行替換
$ ssh -R ywzm:80:localhost:8080 serveo.net
Hi there
Forwarding HTTP traffic from https://ywzm.serveo.net
Press g to start a GUI session and ctrl-c to quit.
...
# 上面的域名是簡寫的,你也可以寫出完整的域名。
$ ssh -R ywzm.serveo.net:80:localhost:8080 serveo.net
SSH 連接成功后,此時就可以在公網(wǎng)上使用 ywzm.serveo.net 訪問到你本地計算機 8080 端口的服務(wù)了。
上面的例子中,我們轉(zhuǎn)發(fā)的是 HTTP 服務(wù)。如果你需要轉(zhuǎn)發(fā)的是 TCP 服務(wù),又應(yīng)該怎么做呢?其實方法也很簡單,同樣只需設(shè)置公網(wǎng)的轉(zhuǎn)發(fā)端口和本地端口就可以了。例如:我們需要將本地 3306 端口轉(zhuǎn)發(fā)到公網(wǎng)中,使用下面命令即可。
# 可以自行設(shè)置公網(wǎng)端口,這里設(shè)置為 1492
$ ssh -R 1492:localhost:3306 serveo.net
# 如果公網(wǎng)端口設(shè)置為 0,就會采用一個隨機端口進行轉(zhuǎn)發(fā)
$ ssh -R 0:localhost:3306 serveo.net
將本地 SSH 重定向到公網(wǎng)
在很多場景下,我們需要遠(yuǎn)程訪問到本地計算機的 SSH 服務(wù)。要實現(xiàn)這樣的需求也很簡單,只需要使用下面的命令。
# 名稱為自定義的,這里設(shè)置為 myhost
$ ssh -R myhost:22:localhost:22 serveo.net
Hi there
Forwarding SSH traffic from alias 'myhost'
Press g to start a GUI session and ctrl-c to quit.
...
連接成功后,接下來你就可以從公網(wǎng)上對這個內(nèi)網(wǎng)計算機的 SSH 進行訪問了。
$ ssh -J serveo.net myuser@myhost
Hi there
myuser@myhost's password:
Last login: Mon Dec 24 21:00:32 2019 from 127.0.0.1
...
-J 選項是在 OpenSSH 7.3 版本才引入的,如果你使用的 SSH 客戶端版本較舊,則可以使用 ProxyCommand 選項來替代。
$ ssh -o ProxyCommand='ssh -W myhost:22 serveo.net' user@myhost
一些其它技巧
眾所周知,SSH 連接一旦超時就會自動斷開,這樣就很容易造成服務(wù)中斷。這里我們只需給 SSH 連接增加一個?;顓?shù) -o ServerAliveInterval=60 就可以了。
# 每隔 60 秒做一次連接?;?/p>
$ ssh -o ServerAliveInterval=60 -R 80:localhost:8080 serveo.net
對 SSH 連接進行守護
上面的方法雖然可以解決超時的問題,但進程始終是在前臺運行的。為了徹底解決這個問題,官方推薦使用 AutoSSH 來進行進程守護。
AutoSSH 是一個用來對 SSH 連接進行監(jiān)控的程序,可在遇到程序問題或者是網(wǎng)絡(luò)問題時自動進行重連,以達(dá)到長期保持 SSH 穩(wěn)定連接的目的 。
安裝 AutoSSH
# Debian / Ubuntu 系統(tǒng)
$ apt install autossh -y
# CentOS / RHEL 系統(tǒng)
$ yum install autossh -y
將 AutoSSH 加入到系統(tǒng)服務(wù)
這里以加入到 Systemd 系統(tǒng)服務(wù)為例,此方法適用于 CentOS 7、Debian 8、Ubuntu 16 及以上系統(tǒng)版本。首先,我們創(chuàng)建一個 AutoSSH 的 Systemd 服務(wù)。
$ cat > /etc/systemd/system/autossh.service <
[Unit]
Description=autossh
After=network.target
[Service]
Type=simple
Environment='AUTOSSH_GATETIME=0'
ExecStart=$(command -v autossh) -M 0 -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -R 80:localhost:8080 serveo.net
Restart=on-abort
[Install]
WantedBy=multi-user.target
EOF
AutoSSH 的 -M 參數(shù)主要用于指定一個監(jiān)聽端口來監(jiān)視 SSH 連接狀態(tài),這里指定為 0 的主要目的是禁用 AutoSSH 的監(jiān)控端口。保活依然使用 SSH 自己的 ServerAliveInterval 和 ServerAliveCountMax 選項來完成。
其次,Systemd 系統(tǒng)服務(wù)創(chuàng)建完成后,我們啟動這個 AutoSSH 的服務(wù)并設(shè)置為開機自啟。
$ systemctl start autossh
$ systemctl enable autossh
如果你無法通過 22 端口連接到 Serveo,官方還預(yù)留了 443 端口給你使用
$ ssh -p 443 -R 80:localhost:8080 serveo.net
使用自定義的域名 / 子域名
默認(rèn)情況下,我們都是使用的 Serveo 生成的二級域名進行連接的。如果你想使用自己的域名也是可以的,方法非常簡單。只需要在你的域名所在 DNS 中添加一條 A 記錄和一條 TXT 記錄就可實現(xiàn)。
4.1 添加一條 A 記錄
A | serveo | 159.89.214.31
4.2 添加一條 TXT 記錄
TXT | serveo | authkeyfp=SHA256:pmc7ZRv7ymCmghUwHoJWEm5ToSTd33ryeDeps5RnfRY
authkeyfp 后面跟的那一串字符是 RSA 密鑰指紋,你可以使用 ssh-keygen -l 命令進行查看。
DNS 解析記錄增加好后,你就可以使用自定義域名進行連接了。
$ ssh -R serveo.ywzm.org:80:localhost:3000 serveo.net
至此,Serveo 的基本用法就介紹完了。如果你對它有更多的興趣,歡迎去官網(wǎng)進行探索。
原文鏈接:https://blog.csdn.net/easylife206/article/details/100981031
=''>