自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SSH只能用于遠(yuǎn)程Linux主機(jī)?那說明你見識太小了!

系統(tǒng) Linux
本文從SSH是什么出發(fā),講述了SSH的基本用法,之后在遠(yuǎn)程登錄、端口轉(zhuǎn)發(fā)等多種場景下進(jìn)行獨(dú)立的講述,希望能對大家有所幫助。

今天為大家分享一篇關(guān)于SSH 的介紹和使用方法的文章。本文從SSH是什么出發(fā),講述了SSH的基本用法,之后在遠(yuǎn)程登錄、端口轉(zhuǎn)發(fā)等多種場景下進(jìn)行獨(dú)立的講述,希望能對大家有所幫助。

什么是SSH?

SSH是一種網(wǎng)絡(luò)協(xié)議,用于計(jì)算機(jī)之間的加密登錄。最早的時(shí)候,互聯(lián)網(wǎng)通信都是明文通信,一旦被截獲,內(nèi)容就暴露無疑。1995年,芬蘭學(xué)者Tatu Ylonen設(shè)計(jì)了SSH協(xié)議,將登錄信息全部加密,成為互聯(lián)網(wǎng)安全的一個(gè)基本解決方案,迅速在全世界獲得推廣,目前已經(jīng)成為Linux系統(tǒng)的標(biāo)準(zhǔn)配置。

SSH登錄原理

SSH基本用法

語法: 

  1. ssh -p 22 user@host 

參數(shù):

-p:指定端口號。

user:登錄的用戶名。

host:登錄的主機(jī)。

默認(rèn)的端口號為22,當(dāng)端口號為22的時(shí)候,可以省略,直接使用如下方式: 

  1. ssh user@host 

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

  1. ssh host 

SSH遠(yuǎn)程登錄實(shí)例

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

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

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

  1. netstat -ntlp |grep ssh 

使用如下命令進(jìn)行連接。 

  1. ssh -p 22 root@192.168.13.135 

若在本機(jī)上是首次登錄該遠(yuǎn)程主機(jī),則會出現(xiàn)如下界面。

大致意思就是,無法確認(rèn)host主機(jī)的真實(shí)性,只知道它的公鑰指紋,問你還想繼續(xù)連接嗎?輸入yes即可。

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

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

SSH端口轉(zhuǎn)發(fā)

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

1.轉(zhuǎn)發(fā)的參數(shù) 

  1. -C:壓縮數(shù)據(jù)  
  2. -f :后臺認(rèn)證用戶/密碼,通常和-N連用,不用登錄到遠(yuǎn)程主機(jī)。  
  3. -N :不執(zhí)行腳本或命令,通常與-f連用。  
  4. -g :在-L/-R/-D參數(shù)中,允許遠(yuǎn)程主機(jī)連接到建立的轉(zhuǎn)發(fā)的端口,如果不加這個(gè)參數(shù),只允許本地主機(jī)建立連接。  
  5. -L : 本地端口:目標(biāo)IP:目標(biāo)端口  
  6. -D : 動態(tài)端口轉(zhuǎn)發(fā)  
  7. -R : 遠(yuǎn)程端口轉(zhuǎn)發(fā)  
  8. -T :不分配 TTY 只做代理用  
  9. -q :安靜模式,不輸出 錯(cuò)誤/警告 信息 

2.本地轉(zhuǎn)發(fā)

有本地網(wǎng)絡(luò)服務(wù)器的某個(gè)端口,轉(zhuǎn)發(fā)到遠(yuǎn)程服務(wù)器某個(gè)端口。說白了就是,將發(fā)送到本地端口的請求,轉(zhuǎn)發(fā)到目標(biāo)端口。格式如下:

ssh -L 本地網(wǎng)卡地址:本地端口:目標(biāo)地址:目標(biāo)端口 用戶@目標(biāo)地址。

現(xiàn)在我們利用本地轉(zhuǎn)發(fā)來解決一個(gè)問題,比如我們有兩臺機(jī)器,如下:

centos A(192.168.13.139)

centos B(192.168.13.142)

現(xiàn)在,centos B(192.168.13.142)機(jī)器上面安裝了mysql,并設(shè)置了運(yùn)行任何主機(jī)連接,如下:

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

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

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

此時(shí),我們還是使用上面的mysql連接方式,肯定會報(bào)錯(cuò),如下:

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

這個(gè)時(shí)候,我們就可以使用本地端口轉(zhuǎn)發(fā)了,將本地的某個(gè)端口,映射到centos B(192.168.13.142)機(jī)器上面的,如下: 

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

因?yàn)楸镜鼐W(wǎng)卡地址是可以省略的,上面的轉(zhuǎn)發(fā),可以簡寫為: 

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

當(dāng)然,ssh連接的時(shí)候,若兩臺機(jī)器的用戶名相同,也是可以省略的,即命令可以簡寫為: 

  1. ssh -L 3306:127.0.0.1:3306 192.168.13.14 

上面的代碼就是將本地的3306端口,轉(zhuǎn)發(fā)到192.168.13.142的3306端口。因?yàn)閏entos B(192.168.13.142)上面的mysql使用的3606端口。當(dāng)然,我們首先得看看本地的3306端口是否被占用,如被占用,可以使用其他的端口。

數(shù)據(jù)流向如圖:

首先,centos A(192.168.13.139)上的應(yīng)用將數(shù)據(jù)發(fā)送到本地的127.0.0.1上面的3306端口。

然后,centos A(192.168.13.139)將3306端口的數(shù)據(jù),通過SSH轉(zhuǎn)發(fā)到centos B(192.168.13.142)的3306端口。

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

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

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

  1. bin/mysql -h127.0.0.1 -uroot -p 

如下:

我們可以通過下面命令,在centosA查看ssh轉(zhuǎn)發(fā)監(jiān)聽的進(jìn)程。

3.遠(yuǎn)程轉(zhuǎn)發(fā)

由遠(yuǎn)程服務(wù)器的某個(gè)端口,轉(zhuǎn)發(fā)到本地網(wǎng)絡(luò)的服務(wù)器某個(gè)端口。說白了,就是將發(fā)送到遠(yuǎn)程端口的請求,轉(zhuǎn)發(fā)到目標(biāo)端口。格式如下:

ssh -R 遠(yuǎn)程網(wǎng)卡地址:遠(yuǎn)程端口:目標(biāo)地址:目標(biāo)端口

下面三臺機(jī)器為例,如下:

centos A(192.168.13.139)

centos B(192.168.13.142)

win7(10.18.78.135)

假設(shè),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)上面使用遠(yuǎn)程端口轉(zhuǎn)發(fā)了,讓win7(10.18.78.135)與centos B(192.168.13.142)進(jìn)行通信。 

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

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

SSH的遠(yuǎn)程操作

ssh遠(yuǎn)程操作,主要用于在遠(yuǎn)程的機(jī)器上面執(zhí)行某個(gè)操作,格式如下: 

  1. ssh user@host 'command' 

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

在A機(jī)器上面執(zhí)行如下代碼: 

  1. ssh  dequan@192.168.13.149  'uname -a' 

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

在A機(jī)器上面,執(zhí)行如下命令: 

  1. tar -cz test | ssh dequan@192.168.13.149 'tar -xz' 

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

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

在A機(jī)器上面,執(zhí)行如下命令: 

  1. ssh dequan@192.168.13.149 'netstat -tln |grep 1080' 

SSH的本地轉(zhuǎn)發(fā)

本地轉(zhuǎn)發(fā),說白了,就是把發(fā)到本地的某個(gè)端口請求,轉(zhuǎn)發(fā)到遠(yuǎn)程的某臺機(jī)器上面。格式如下: 

  1. ssh -L  [本地地址:]本地端口:遠(yuǎn)程地址:遠(yuǎn)程端口 遠(yuǎn)程用戶@遠(yuǎn)程地址 

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

現(xiàn)在,我們在A機(jī)器上面,啟動了Nginx服務(wù),如下:

我們希望B機(jī)器也能夠這樣使用A機(jī)器上面的服務(wù)。需要把B機(jī)器上面80端口請求,轉(zhuǎn)發(fā)到A機(jī)器上面。目前在B機(jī)器這樣執(zhí)行,是報(bào)錯(cuò)的,如下:

需要在B機(jī)器上面,執(zhí)行如下代碼: 

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

然后,在B機(jī)器上面,訪問A機(jī)器的服務(wù),就想訪問自身的服務(wù)一樣。

SSH的遠(yuǎn)程轉(zhuǎn)發(fā)

遠(yuǎn)程轉(zhuǎn)發(fā),即把發(fā)給遠(yuǎn)程機(jī)器的某個(gè)端口請求,轉(zhuǎn)發(fā)到本地的機(jī)器上面。格式如下:

  1. ssh -R [遠(yuǎn)程地址:]遠(yuǎn)程端口:本地地址:本地端口 遠(yuǎn)程用戶@遠(yuǎn)程地址 

在上面的案例中,我們也可以通過遠(yuǎn)程轉(zhuǎn)發(fā)來實(shí)現(xiàn)。即在A機(jī)器上面執(zhí)行如下代碼: 

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

我們監(jiān)聽了B機(jī)器的8081端口,把該端口的請求,轉(zhuǎn)發(fā)到A機(jī)器上面。

可以在B機(jī)器上面看到,我們的監(jiān)聽,如下:

此時(shí),執(zhí)行如下命令,就會被轉(zhuǎn)發(fā)到A機(jī)器的127.0.0.1的80端口,如下:

1、利用遠(yuǎn)程轉(zhuǎn)發(fā),實(shí)現(xiàn)代理功能

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

此時(shí),需要將B的監(jiān)聽,由127.0.0.1:8081,改為0:0.0.0:8081,修改sshd的配置/etc/ssh/sshd_config。 

  1.  vim /etc/ssh/sshd_config  
  2. 如果有  
  3. GatewayPorts no  
  4. 改為  
  5. GatewayPorts yes  
  6. 沒有,添加即可  
  7. 然后重啟sshd  
  8. sudo service sshd restart 

然后重新,設(shè)置動態(tài)轉(zhuǎn)發(fā),如下: 

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

可以看到,此時(shí)B機(jī)器,已經(jīng)監(jiān)聽了0:0.0.0:8081

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

 

  1. curl -x 192.168.13.149:8081 127.0.0.1 

當(dāng)然,如果還有其他機(jī)器,也可以使用類似的方式,來請求A機(jī)器。

SSH的動態(tài)轉(zhuǎn)發(fā)

對于SSH的本地轉(zhuǎn)發(fā)和遠(yuǎn)程轉(zhuǎn)發(fā),都需要將本地端口和遠(yuǎn)程端口一一綁定,格式如下: 

  1. ssh -D [本地地址:]本地端口號 遠(yuǎn)程用戶@遠(yuǎn)程地址 

比如,把發(fā)到B機(jī)器上面的請求,都轉(zhuǎn)發(fā)到A機(jī)器上面,讓A機(jī)器去執(zhí)行請求。

SSH存在的問題

如果有人截獲了登錄請求,然后冒充遠(yuǎn)程主機(jī),將偽造的公鑰發(fā)給用戶,那么用戶很難辨別真?zhèn)?。因?yàn)椴幌駂ttps協(xié)議,SSH協(xié)議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發(fā)的。

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

總結(jié)

本篇文章主要介紹了SSH的基本概念和實(shí)踐中常用的一些方法,并沒有涉及深層原理和優(yōu)化的知識,在底層實(shí)現(xiàn)和協(xié)議具體內(nèi)容還能繼續(xù)深入研究。 

 

責(zé)任編輯:龐桂玉 來源: Python之禪
相關(guān)推薦

2020-09-10 11:00:20

SSH遠(yuǎn)程Linux

2021-08-11 09:50:34

SSHLinux命令

2022-02-28 21:01:39

VR/AR

2009-12-09 17:37:36

PHP函數(shù)isset(

2015-04-02 11:25:39

2015-10-21 11:03:21

ssh登錄Linux

2017-06-06 13:55:22

LinuxSSHssh_scan

2009-09-07 09:27:18

scpLinux主機(jī)復(fù)制

2009-08-17 08:22:53

linuxssh遠(yuǎn)程登錄

2021-08-28 17:30:51

LinuxSSH

2009-12-04 19:33:53

2017-03-16 14:07:11

LinuxSSH遠(yuǎn)程訪問

2009-09-03 14:04:12

LinuxSSH程管理

2017-02-17 09:20:24

rtopSSH監(jiān)控

2015-02-11 09:41:02

土豪APP

2019-11-26 08:40:16

LinuxSSHSFTP

2018-10-10 11:18:39

2021-11-30 09:41:23

AI 數(shù)據(jù)人工智能

2009-06-15 10:40:14

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號