久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SSH遠程登陸Linux主機怎么實現

149次閱讀
沒有評論

共計 4973 個字符,預計需要花費 13 分鐘才能閱讀完成。

這篇文章主要講解了“SSH 遠程登陸 Linux 主機怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“SSH 遠程登陸 Linux 主機怎么實現”吧!

什么是 SSH?

SSH 是一種網絡協議,用于計算機之間的加密登錄。最早的時候,互聯網通信都是明文通信,一旦被截獲,內容就暴露無疑。1995 年,芬蘭學者 Tatu Ylonen 設計了 SSH 協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為 Linux 系統的標準配置。

SSH 登錄原理

SSH 遠程登陸 Linux 主機怎么實現

SSH 基本用法

語法:

ssh -p 22 user@host

參數:

 -p:指定端口號。

 user:登錄的用戶名。

 host:登錄的主機。

默認的端口號為 22,當端口號為 22 的時候,可以省略,直接使用如下方式:

ssh user@host

此外,如果本地正在使用的用戶名與遠程登錄的用戶名一致,登錄用戶名也是可以省略的,即如下:

ssh host

SSH 遠程登錄實例

現在我有兩臺 linux 虛擬機,上面安裝都是 centOS6.5,ip 分別為 192.168.13.135 和 192.168.13.138,如下圖:

SSH 遠程登陸 Linux 主機怎么實現

SSH 遠程登陸 Linux 主機怎么實現

現在,我需要操作的是通過 SSH 在 192.168.13.138 上面,登錄到 192.168.13.135 上面。

首先,我們可以使用如下命令,查看兩臺機器是否啟用了 ssh。

netstat -ntlp |grep ssh

SSH 遠程登陸 Linux 主機怎么實現

使用如下命令進行連接。

ssh -p 22 root@192.168.13.135

若在本機上是首次登錄該遠程主機,則會出現如下界面。

SSH 遠程登陸 Linux 主機怎么實現

大致意思就是,無法確認 host 主機的真實性,只知道它的公鑰指紋,問你還想繼續連接嗎?輸入 yes 即可。

SSH 遠程登陸 Linux 主機怎么實現

然后輸入密碼,即可連接 ok 了。

SSH 遠程登陸 Linux 主機怎么實現

要想退出,直接輸入 exit 即可。

SSH 遠程登陸 Linux 主機怎么實現

SSH 端口轉發

SSH 不僅僅能夠自動加密和解密 SSH 客戶端與服務端之間的網絡數據,同時,SSH 還能夠提供了一個非常有用的功能,那就是端口轉發,即將 TCP 端口的網絡數據,轉發到指定的主機某個端口上,在轉發的同時會對數據進行相應的加密及解密。如果工作環境中的防火墻限制了一些網絡端口的使用,但是允許 SSH 的連接,那么也是能夠通過使用 SSH 轉發后的端口進行通信。轉發,主要分為本地轉發與遠程轉發兩種類型。

1. 轉發的參數

-C:壓縮數據  -f :后臺認證用戶 / 密碼,通常和 - N 連用,不用登錄到遠程主機。 -N :不執行腳本或命令,通常與 - f 連用。 -g :在 -L/-R/- D 參數中,允許遠程主機連接到建立的轉發的端口,如果不加這個參數,只允許本地主機建立連接。 -L :  本地端口: 目標 IP: 目標端口  -D :  動態端口轉發  -R :  遠程端口轉發  -T :不分配  TTY  只做代理用  -q :安靜模式,不輸出   錯誤 / 警告   信息 

2. 本地轉發

有本地網絡服務器的某個端口,轉發到遠程服務器某個端口。說白了就是,將發送到本地端口的請求,轉發到目標端口。格式如下:

ssh -L 本地網卡地址: 本地端口: 目標地址: 目標端口 用戶 @目標地址。

現在我們利用本地轉發來解決一個問題,比如我們有兩臺機器,如下:

centos A(192.168.13.139)

centos B(192.168.13.142)

SSH 遠程登陸 Linux 主機怎么實現

現在,centos B(192.168.13.142)機器上面安裝了 mysql,并設置了運行任何主機連接,如下:

SSH 遠程登陸 Linux 主機怎么實現

此時,在 centos A(192.168.13.139)上面是可以連上 centos B(192.168.13.142)的 mysql,如下:

SSH 遠程登陸 Linux 主機怎么實現

那么,現在我開始 centos B(192.168.13.142)限制不允許外部 ip 連接,僅僅讓 127.0.0.1 連接,如下:

SSH 遠程登陸 Linux 主機怎么實現

此時,centos A(192.168.13.139)上面怎么連接上 centos B(192.168.13.142)的 mysql 呢?

此時,我們還是使用上面的 mysql 連接方式,肯定會報錯,如下:

SSH 遠程登陸 Linux 主機怎么實現

當然在 centos B(192.168.13.142)mysql 還是可訪問的。

SSH 遠程登陸 Linux 主機怎么實現

這個時候,我們就可以使用本地端口轉發了,將本地的某個端口,映射到 centos B(192.168.13.142)機器上面的,如下:

ssh -L 127.0.0.1:3306:127.0.0.1:3306 root@192.168.13.142

因為本地網卡地址是可以省略的,上面的轉發,可以簡寫為:

ssh -L 3306:127.0.0.1:3306 root@192.168.13.142

當然,ssh 連接的時候,若兩臺機器的用戶名相同,也是可以省略的,即命令可以簡寫為:

ssh -L 3306:127.0.0.1:3306 192.168.13.14

上面的代碼就是將本地的 3306 端口,轉發到 192.168.13.142 的 3306 端口。因為 centos B(192.168.13.142)上面的 mysql 使用的 3606 端口。當然,我們首先得看看本地的 3306 端口是否被占用,如被占用,可以使用其他的端口。

數據流向如圖:

SSH 遠程登陸 Linux 主機怎么實現

首先,centos A(192.168.13.139)上的應用將數據發送到本地的 127.0.0.1 上面的 3306 端口。

然后,centos A(192.168.13.139)將 3306 端口的數據,通過 SSH 轉發到 centos B(192.168.13.142)的 3306 端口。

接著,centos B(192.168.13.142)將處理后的數據,原路返回給 centos A(192.168.13.139)。

如果是首次通過 ssh 連接 cetosB 該機器,則會提示確認公鑰,并讓你選擇是否確定連接。

SSH 遠程登陸 Linux 主機怎么實現

此時,我們在 centos A 上面連接 centos B 上面的 mysql,就可以這么寫了。

bin/mysql -h227.0.0.1 -uroot -p

如下:

SSH 遠程登陸 Linux 主機怎么實現

我們可以通過下面命令,在 centosA 查看 ssh 轉發監聽的進程。

SSH 遠程登陸 Linux 主機怎么實現

3. 遠程轉發

由遠程服務器的某個端口,轉發到本地網絡的服務器某個端口。說白了,就是將發送到遠程端口的請求,轉發到目標端口。格式如下:

ssh -R 遠程網卡地址: 遠程端口: 目標地址: 目標端口

下面三臺機器為例,如下:

centos A(192.168.13.139)

centos B(192.168.13.142)

win7(10.18.78.135)

假設,win7(10.18.78.135)與 centos B(192.168.13.142)不能直接連接,但是 win7(10.18.78.135)與 centos A(192.168.13.139)可以連接 centos B(192.168.13.142)也可以 centos A(192.168.13.139)連接,那么,我們就可以在 centos A(192.168.13.139)上面使用遠程端口轉發了,讓 win7(10.18.78.135)與 centos B(192.168.13.142)進行通信。

ssh -R 127.0.0.1:80:10.18.78.135:80 root@192.168.13.142

即 centos B(192.168.13.142)監聽自己的 80 端口,然后將所有數據,由 centos A(192.168.13.139)發給 win7(10.18.78.135)。

SSH 的遠程操作

ssh 遠程操作,主要用于在遠程的機器上面執行某個操作,格式如下:

ssh user@host  command 

案例 1、在機器 A(192.168.13.148)中查看機器 B(192.168.13.149)的操作系統類型。

在 A 機器上面執行如下代碼:

ssh dequan@192.168.13.149  uname -a

案例 2、將機器 A(192.168.13.148)中 test 文件夾復制到 B 機器(192.168.13.149)。

在 A 機器上面,執行如下命令:

tar -cz test | ssh dequan@192.168.13.149  tar -xz

當然,我們也可以使用 scp 命令或 rz 命令,傳輸文件。

案例 3、在機器 A(192.168.13.148)處查看 B 機器(192.168.13.149)是否監聽了 1080 端口。

在 A 機器上面,執行如下命令:

ssh dequan@192.168.13.149  netstat -tln |grep 1080

SSH 遠程登陸 Linux 主機怎么實現

SSH 的本地轉發

本地轉發,說白了,就是把發到本地的某個端口請求,轉發到遠程的某臺機器上面。格式如下:

ssh -L [本地地址:] 本地端口: 遠程地址: 遠程端口   遠程用戶 @遠程地址 

案例 1、在機器 B(192.168.13.149)上面訪問機器 A(192.168.13.148)的服務。

現在,我們在 A 機器上面,啟動了 Nginx 服務,如下:

SSH 遠程登陸 Linux 主機怎么實現

我們希望 B 機器也能夠這樣使用 A 機器上面的服務。需要把 B 機器上面 80 端口請求,轉發到 A 機器上面。目前在 B 機器這樣執行,是報錯的,如下:

SSH 遠程登陸 Linux 主機怎么實現

需要在 B 機器上面,執行如下代碼:

ssh -f -N -L 127.0.01:80:192.168.13.148:80 dequan@192.168.13.148

然后,在 B 機器上面,訪問 A 機器的服務,就想訪問自身的服務一樣。

SSH 遠程登陸 Linux 主機怎么實現

SSH 的遠程轉發

遠程轉發,即把發給遠程機器的某個端口請求,轉發到本地的機器上面。格式如下:

ssh -R [遠程地址:] 遠程端口: 本地地址: 本地端口   遠程用戶 @遠程地址 

在上面的案例中,我們也可以通過遠程轉發來實現。即在 A 機器上面執行如下代碼:

sudo ssh -f -N -R 8081:127.0.0.1:80 dequan@192.168.13.149

我們監聽了 B 機器的 8081 端口,把該端口的請求,轉發到 A 機器上面。

可以在 B 機器上面看到,我們的監聽,如下:

SSH 遠程登陸 Linux 主機怎么實現

此時,執行如下命令,就會被轉發到 A 機器的 127.0.0.1 的 80 端口,如下:

SSH 遠程登陸 Linux 主機怎么實現

1、利用遠程轉發,實現代理功能

目前 B 機器,只能在自己 127.0.0.1 的 80 端口監聽并轉發,如何讓 B 機器作為代理,轉發其他機器的請求到 A 機器上面呢?比如,現在有一臺機器 C(192.168.13.143),C 不能訪問 A,但是能夠訪問 B。如何讓 C 利用 B 來訪問 A 呢?

此時,需要將 B 的監聽,由 127.0.0.1:8081,改為 0:0.0.0:8081,修改 sshd 的配置 /etc/ssh/sshd_config。

vim /etc/ssh/sshd_config #如果有  GatewayPorts no #改為  GatewayPorts yes #沒有,添加即可  # 然后重啟 sshd sudo service sshd restart

然后重新,設置動態轉發,如下:

ssh -f -g -N -R 8081:127.0.0.1:80 dequan@192.168.13.149

可以看到,此時 B 機器,已經監聽了 0:0.0.0:8081

SSH 遠程登陸 Linux 主機怎么實現

在 C 機器上面,我們通過 curl 模擬請求,利用 B 機器做代理,如下:

curl -x 192.168.13.149:8081 127.0.0.1

SSH 遠程登陸 Linux 主機怎么實現

當然,如果還有其他機器,也可以使用類似的方式,來請求 A 機器。

SSH 的動態轉發

對于 SSH 的本地轉發和遠程轉發,都需要將本地端口和遠程端口一一綁定,格式如下:

ssh -D [本地地址:] 本地端口號   遠程用戶 @遠程地址 

比如,把發到 B 機器上面的請求,都轉發到 A 機器上面,讓 A 機器去執行請求。

SSH 存在的問題

如果有人截獲了登錄請求,然后冒充遠程主機,將偽造的公鑰發給用戶,那么用戶很難辨別真偽。因為不像 https 協議,SSH 協議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發的。

可以設想,如果攻擊者插在用戶與遠程主機之間(比如在公共的 wifi 區域),用偽造的公鑰,獲取用戶的登錄密碼。再用這個密碼登錄遠程主機,那么 SSH 的安全機制就蕩然無存了。這種風險就是著名的 中間人攻擊(Man-in-the-middle attack)。

感謝各位的閱讀,以上就是“SSH 遠程登陸 Linux 主機怎么實現”的內容了,經過本文的學習后,相信大家對 SSH 遠程登陸 Linux 主機怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計4973字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 五常市| 广水市| 青神县| 濉溪县| 镇宁| 鞍山市| 秦皇岛市| 浮山县| 华宁县| 璧山县| 涟水县| 灵寿县| 临澧县| 寿阳县| 田阳县| 哈尔滨市| 谢通门县| 文登市| 康马县| 张北县| 荆州市| 平南县| 昂仁县| 礼泉县| 临洮县| 景东| 高雄县| 墨脱县| 皋兰县| 青川县| 梓潼县| 陇川县| 丹棱县| 郧西县| 桐乡市| 且末县| 隆昌县| 乌拉特中旗| 丹寨县| 抚顺县| 许昌市|