您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“如何在Fedora上使用SSH端口轉(zhuǎn)發(fā)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
標準 Linux 系統(tǒng)已分配了一組網(wǎng)絡(luò)端口,范圍是 0 - 65535。系統(tǒng)會保留 0 - 1023 的端口以供系統(tǒng)使用。在許多系統(tǒng)中,你不能選擇使用這些低端口號。通常有幾個端口用于運行特定的服務(wù)。你可以在系統(tǒng)的 /etc/services
文件中找到這些定義。
你可以認為網(wǎng)絡(luò)端口是類似的物理端口或可以連接到電纜的插孔。端口可以連接到系統(tǒng)上的某種服務(wù),類似物理插孔后面的接線。一個例子是 Apache Web 服務(wù)器(也稱為 httpd
)。對于 HTTP 非安全連接,Web 服務(wù)器通常要求在主機系統(tǒng)上使用端口 80,對于 HTTPS 安全連接通常要求使用 443。
當你連接到遠程系統(tǒng)(例如,使用 Web 瀏覽器)時,你是將瀏覽器“連接”到你的主機上的端口。這通常是一個隨機的高端口號,例如 54001。你的主機上的端口連接到遠程主機上的端口(例如 443)來訪問其安全的 Web 服務(wù)器。
那么,當你有這么多可用端口時,為什么還要使用端口轉(zhuǎn)發(fā)呢?這是 Web 開發(fā)人員生活中的幾種常見情況。
想象一下,你正在名為 remote.example.com
的遠程系統(tǒng)上進行 Web 開發(fā)。通常,你是通過 ssh
進入此系統(tǒng)的,但是它位于防火墻后面,而且該防火墻很少允許其他類型的訪問,并且會阻塞大多數(shù)其他端口。要嘗試你的網(wǎng)絡(luò)應(yīng)用,能夠使用瀏覽器訪問遠程系統(tǒng)會很有幫助。但是,由于使用了討厭的防火墻,你無法通過在瀏覽器中輸入 URL 的常規(guī)方法來訪問它。
本地轉(zhuǎn)發(fā)使你可以通過 ssh
連接來建立可通過遠程系統(tǒng)訪問的端口。該端口在系統(tǒng)上顯示為本地端口(因而稱為“本地轉(zhuǎn)發(fā)”)。
假設(shè)你的網(wǎng)絡(luò)應(yīng)用在 remote.example.com
的 8000 端口上運行。要將那個系統(tǒng)的 8000 端口本地轉(zhuǎn)發(fā)到你系統(tǒng)上的 8000 端口,請在開始會話時將 -L
選項與 ssh
結(jié)合使用:
$ ssh -L 8000:localhost:8000 remote.example.com
等等,為什么我們使用 localhost
作為轉(zhuǎn)發(fā)目標?這是因為從 remote.example.com
的角度來看,你是在要求主機使用其自己的端口 8000。(回想一下,任何主機通??梢酝ㄟ^網(wǎng)絡(luò)連接 localhost
而連接到自身。)現(xiàn)在那個端口連接到你系統(tǒng)的 8000 端口了。ssh
會話準備就緒后,將其保持打開狀態(tài),然后可以在瀏覽器中鍵入 http://localhost:8000
來查看你的 Web 應(yīng)用?,F(xiàn)在,系統(tǒng)之間的流量可以通過 ssh
隧道安全地傳輸!
如果你有敏銳的眼睛,你可能已經(jīng)注意到了一些東西。如果我們要 remote.example.com
轉(zhuǎn)發(fā)到與 localhost
不同的主機名怎么辦?如果它可以訪問該網(wǎng)絡(luò)上另一個系統(tǒng)上的端口,那么通??梢酝瑯虞p松地轉(zhuǎn)發(fā)該端口。例如,假設(shè)你想訪問也在該遠程網(wǎng)絡(luò)中的 db.example.com
的 MariaDB 或 MySQL 服務(wù)。該服務(wù)通常在端口 3306 上運行。因此,即使你無法 ssh
到實際的 db.example.com
主機,你也可以使用此命令將其轉(zhuǎn)發(fā):
$ ssh -L 3306:db.example.com:3306 remote.example.com
現(xiàn)在,你可以在 localhost
上運行 MariaDB 命令,而實際上是在使用 db.example.com
主機。
遠程轉(zhuǎn)發(fā)讓你可以進行相反操作。想象一下,你正在為辦公室的朋友設(shè)計一個 Web 應(yīng)用,并想向他們展示你的工作。不過,不幸的是,你在咖啡店里工作,并且由于網(wǎng)絡(luò)設(shè)置,他們無法通過網(wǎng)絡(luò)連接訪問你的筆記本電腦。但是,你同時使用著辦公室的 remote.example.com
系統(tǒng),并且仍然可在這里登錄。你的 Web 應(yīng)用似乎在本地 5000 端口上運行良好。
遠程端口轉(zhuǎn)發(fā)使你可以通過 ssh
連接從本地系統(tǒng)建立端口的隧道,并使該端口在遠程系統(tǒng)上可用。在開始 ssh
會話時,只需使用 -R
選項:
$ ssh -R 6000:localhost:5000 remote.example.com
現(xiàn)在,當在公司防火墻內(nèi)的朋友打開瀏覽器時,他們可以進入 http://remote.example.com:6000
查看你的工作。就像在本地端口轉(zhuǎn)發(fā)示例中一樣,通信通過 ssh
會話安全地進行。
默認情況下,sshd
守護進程運行在設(shè)置的主機上,因此只有該主機可以連接它的遠程轉(zhuǎn)發(fā)端口。假設(shè)你的朋友希望能夠讓其他 example.com
公司主機上的人看到你的工作,而他們不在 remote.example.com
上。你需要讓 remote.example.com
主機的所有者將以下選項之一添加到 /etc/ssh/sshd_config
中:
GatewayPorts yes # 或GatewayPorts clientspecified
第一個選項意味著 remote.example.com
上的所有網(wǎng)絡(luò)接口都可以使用遠程轉(zhuǎn)發(fā)的端口。第二個意味著建立隧道的客戶端可以選擇地址。默認情況下,此選項設(shè)置為 no
。
使用此選項,你作為 ssh
客戶端仍必須指定可以共享你這邊轉(zhuǎn)發(fā)端口的接口。通過在本地端口之前添加網(wǎng)絡(luò)地址范圍來進行此操作。有幾種方法可以做到,包括:
$ ssh -R *:6000:localhost:5000 # 所有網(wǎng)絡(luò)$ ssh -R 0.0.0.0:6000:localhost:5000 # 所有網(wǎng)絡(luò)$ ssh -R 192.168.1.15:6000:localhost:5000 # 單個網(wǎng)絡(luò)$ ssh -R remote.example.com:6000:localhost:5000 # 單個網(wǎng)絡(luò)
請注意,本地和遠程系統(tǒng)上的端口號不必相同。實際上,有時你甚至可能無法使用相同的端口。例如,普通用戶可能不會在默認設(shè)置中轉(zhuǎn)發(fā)到系統(tǒng)端口。
另外,可以限制主機上的轉(zhuǎn)發(fā)。如果你需要在聯(lián)網(wǎng)主機上更嚴格的安全性,那么這你來說可能很重要。 sshd
守護程進程的 PermitOpen
選項控制是否以及哪些端口可用于 TCP 轉(zhuǎn)發(fā)。默認設(shè)置為 any
,這讓上面的所有示例都能正常工作。要禁止任何端口轉(zhuǎn)發(fā),請選擇 none
,或僅允許的特定的“主機:端口”。有關(guān)更多信息,請在手冊頁中搜索 PermitOpen
來配置 sshd
守護進程:
$ man sshd_config
最后,請記住,只有在 ssh
會話處于打開狀態(tài)時才會端口轉(zhuǎn)發(fā)。如果需要長時間保持轉(zhuǎn)發(fā)活動,請嘗試使用 -N
選項在后臺運行會話。確??刂婆_已鎖定,以防止在你離開控制臺時其被篡奪。
“如何在Fedora上使用SSH端口轉(zhuǎn)發(fā)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。