濮阳杆衣贸易有限公司

主頁 > 知識庫 > 使用ssh訪問防火墻后的Linux服務器的方法

使用ssh訪問防火墻后的Linux服務器的方法

熱門標簽:江蘇小型外呼系統(tǒng)軟件 中山防封卡電銷卡辦理 文山外呼營銷系統(tǒng) 常熟外呼系統(tǒng) 拉薩銷售外呼系統(tǒng)軟件 電話機器人服務器部署 百度地圖標注未成功 地圖上標注點位的圖標 電銷語音機器人哪個好

使用ssh工具訪問Linux服務器的基本方法

第一步,開啟工作站上防火墻的相應端口,SSH是22。

第二步,開啟SSH服務。
先查看ssh的狀態(tài)。

復制代碼
代碼如下:
service sshd status

開啟服務,
復制代碼
代碼如下:
service sshd start

當然也可以關閉了,
復制代碼
代碼如下:
service sshd stop

重啟服務,
復制代碼
代碼如下:
sshd restart

第三步,修改配置文件,/etc/ssh/sshd_config
打開這個文件,在最后的地方AllowUsers,添加用戶名,多個就用空格隔開,當然也可以添加root。如果想禁用root 登錄也可以,這里不添加。同時可以在這個文件中找到一個語句: Permitrootlogin yes。將yes改為no就可以了。

第四步,設置ssh隨機啟動

復制代碼
代碼如下:
chkconfig --level xxxx sshd on //xxxx表示你要的等級(應該這么說吧),例如2345等

第五步,遠程登錄
 

復制代碼
代碼如下:
ssh usrname@hostname //hostname或者Ip

然后就是要你輸入密碼了。登錄后,也可以更改用戶(su 命令)。如何希望有圖形,也不是不可以,在登錄的時候加上 -X (大寫的X):ssh -X usrname@hostname。
這樣勉強可以吧,也有圖形界面了,就是反映比較慢,應急可以。

通過反向 SSH 隧道訪問 NAT 后面的 Linux 服務器

什么是反向 SSH 隧道?
SSH 端口轉發(fā)的一種替代方案是 反向 SSH 隧道。反向 SSH 隧道的概念非常簡單。使用這種方案,在你的受限的家庭網(wǎng)絡之外你需要另一臺主機(所謂的“中繼主機”),你能從當前所在地通過 SSH 登錄到它。你可以用有公網(wǎng) IP 地址的 VPS 實例 配置一個中繼主機。然后要做的就是從你的家庭網(wǎng)絡服務器中建立一個到公網(wǎng)中繼主機的永久 SSH 隧道。有了這個隧道,你就可以從中繼主機中連接“回”家庭服務器(這就是為什么稱之為 “反向” 隧道)。不管你在哪里、你的家庭網(wǎng)絡中的 NAT 或 防火墻限制多么嚴格,只要你可以訪問中繼主機,你就可以連接到家庭服務器。

在 Linux 上設置反向 SSH 隧道
讓我們來看看怎樣創(chuàng)建和使用反向 SSH 隧道。我們做如下假設:我們會設置一個從家庭服務器(homeserver)到中繼服務器(relayserver)的反向 SSH 隧道,然后我們可以通過中繼服務器從客戶端計算機(clientcomputer) SSH 登錄到家庭服務器。本例中的中繼服務器 的公網(wǎng) IP 地址是 1.1.1.1。

在家庭服務器上,按照以下方式打開一個到中繼服務器的 SSH 連接。


復制代碼
代碼如下:
homeserver~$ ssh -fN -R 10022:localhost:22 relayserver_user@1.1.1.1

這里端口 10022 是任何你可以使用的端口數(shù)字。只需要確保中繼服務器上不會有其它程序使用這個端口。

“-R 10022:localhost:22” 選項定義了一個反向隧道。它轉發(fā)中繼服務器 10022 端口的流量到家庭服務器的 22 號端口。

用 “-fN” 選項,當你成功通過 SSH 服務器驗證時 SSH 會進入后臺運行。當你不想在遠程 SSH 服務器執(zhí)行任何命令,就像我們的例子中只想轉發(fā)端口的時候非常有用。

運行上面的命令之后,你就會回到家庭主機的命令行提示框中。

登錄到中繼服務器,確認其 127.0.0.1:10022 綁定到了 sshd。如果是的話就表示已經(jīng)正確設置了反向隧道。


復制代碼
代碼如下:
relayserver~$ sudo netstat -nap | grep 10022


復制代碼
代碼如下:
tcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd
    
現(xiàn)在就可以從任何其它計算機(客戶端計算機)登錄到中繼服務器,然后按照下面的方法訪問家庭服務器。

 

復制代碼
代碼如下:
relayserver~$ ssh -p 10022 homeserver_user@localhost

需要注意的一點是你在上面為localhost輸入的 SSH 登錄/密碼應該是家庭服務器的,而不是中繼服務器的,因為你是通過隧道的本地端點登錄到家庭服務器,因此不要錯誤輸入中繼服務器的登錄/密碼。成功登錄后,你就在家庭服務器上了。

通過反向SSH 隧道直接連接到網(wǎng)絡地址變換后的服務器
上面的方法允許你訪問 NAT 后面的 家庭服務器,但你需要登錄兩次:首先登錄到 中繼服務器,然后再登錄到家庭服務器。這是因為中繼服務器上 SSH 隧道的端點綁定到了回環(huán)地址(127.0.0.1)。

事實上,有一種方法可以只需要登錄到中繼服務器就能直接訪問NAT之后的家庭服務器。要做到這點,你需要讓中繼服務器上的 sshd 不僅轉發(fā)回環(huán)地址上的端口,還要轉發(fā)外部主機的端口。這通過指定中繼服務器上運行的 sshd 的 GatewayPorts 實現(xiàn)。

打開中繼服務器的 /etc/ssh/sshd_conf 并添加下面的行。

復制代碼
代碼如下:

relayserver~$ vi /etc/ssh/sshd_conf
GatewayPorts clientspecified

重啟 sshd。

基于 Debian 的系統(tǒng):


復制代碼
代碼如下:
relayserver~$ sudo /etc/init.d/ssh restart

基于紅帽的系統(tǒng):


復制代碼
代碼如下:
relayserver~$ sudo systemctl restart sshd

現(xiàn)在在家庭服務器中按照下面方式初始化一個反向 SSH 隧道。


復制代碼
代碼如下:
homeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

登錄到中繼服務器然后用 netstat 命令確認成功建立的一個反向 SSH 隧道。

 

復制代碼
代碼如下:
relayserver~$ sudo netstat -nap | grep 10022


復制代碼
代碼如下:
tcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev

不像之前的情況,現(xiàn)在隧道的端點是 1.1.1.1:10022(中繼服務器的公網(wǎng) IP 地址),而不是 127.0.0.1:10022。這就意味著從外部主機可以訪問隧道的另一端。

現(xiàn)在在任何其它計算機(客戶端計算機),輸入以下命令訪問網(wǎng)絡地址變換之后的家庭服務器。

復制代碼
代碼如下:

clientcomputer~$ ssh -p 10022 homeserver_user@1.1.1.1

在上面的命令中,1.1.1.1 是中繼服務器的公共 IP 地址,homeserver_user必須是家庭服務器上的用戶賬戶。這是因為你真正登錄到的主機是家庭服務器,而不是中繼服務器。后者只是中繼你的 SSH 流量到家庭服務器。

在 Linux 上設置一個永久反向 SSH 隧道
現(xiàn)在你已經(jīng)明白了怎樣創(chuàng)建一個反向 SSH 隧道,然后把隧道設置為 “永久”,這樣隧道啟動后就會一直運行(不管臨時的網(wǎng)絡擁塞、SSH 超時、中繼主機重啟,等等)。畢竟,如果隧道不是一直有效,你就不能可靠的登錄到你的家庭服務器。

對于永久隧道,我打算使用一個叫 autossh 的工具。正如名字暗示的,這個程序可以讓你的 SSH 會話無論因為什么原因中斷都會自動重連。因此對于保持一個反向 SSH 隧道非常有用。

第一步,我們要設置從家庭服務器到中繼服務器的無密碼 SSH 登錄。這樣的話,autossh 可以不需要用戶干預就能重啟一個損壞的反向 SSH 隧道。

下一步,在建立隧道的家庭服務器上安裝 autossh。

在家庭服務器上,用下面的參數(shù)運行 autossh 來創(chuàng)建一個連接到中繼服務器的永久 SSH 隧道。

復制代碼
代碼如下:

homeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1

“-M 10900” 選項指定中繼服務器上的監(jiān)視端口,用于交換監(jiān)視 SSH 會話的測試數(shù)據(jù)。中繼服務器上的其它程序不能使用這個端口。

“-fN” 選項傳遞給 ssh 命令,讓 SSH 隧道在后臺運行。

“-o XXXX” 選項讓 ssh:

使用密鑰驗證,而不是密碼驗證。
自動接受(未知)SSH 主機密鑰。
每 60 秒交換 keep-alive 消息。
沒有收到任何響應時最多發(fā)送 3 條 keep-alive 消息。
其余 SSH 隧道相關的選項和之前介紹的一樣。

如果你想系統(tǒng)啟動時自動運行 SSH 隧道,你可以將上面的 autossh 命令添加到 /etc/rc.local。

標簽:河南 威海 黔南 鶴壁 欽州 景德鎮(zhèn) 天門 海北

巨人網(wǎng)絡通訊聲明:本文標題《使用ssh訪問防火墻后的Linux服務器的方法》,本文關鍵詞  使用,ssh,訪問,防火墻,后的,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用ssh訪問防火墻后的Linux服務器的方法》相關的同類信息!
  • 本頁收集關于使用ssh訪問防火墻后的Linux服務器的方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    安新县| 德兴市| 平山县| 河间市| 昌乐县| 团风县| 句容市| 泗洪县| 桃江县| 宿迁市| 甘洛县| 含山县| 丰都县| 六枝特区| 兖州市| 彰武县| 广南县| 治多县| 翼城县| 田东县| 色达县| 南京市| 桐乡市| 建昌县| 梨树县| 宁蒗| 历史| 恭城| 和林格尔县| 孟津县| 海口市| 盘锦市| 拜城县| 温宿县| 利川市| 淮安市| 华阴市| 扎赉特旗| 永康市| 玉林市| 东丽区|