SSH鏈接原理及ssh-key講解

第1章 SSH服務介紹說明

1.1 SSH服務介紹

SSH22端口)是Secure Shell Protocol的簡寫IETF網絡工做小組(Network Working Group)制定;在進行數據傳輸以前,SSH先對聯機數據包經過加密技術進行加密處理,加密後在進行數據傳輸。確保了傳遞的數據安全linux

SSH是專爲遠程登陸會話和其餘網絡服務提供的安全性協議。利用SSH協議能夠有效的防止遠程管理過程當中的信息泄露問題,在當前的生產環境運維工做中,絕大多數企業普通採用SSH協議服務來代替傳統的不安全的遠程聯機服務軟件,如telnet23端口,非加密的)等。面試

telnet23端口)實現遠程控制管理,可是不對數據進行加密算法

1.2 SSH服務主要提供的服務功能

在默認狀態下,SSH服務主要提供兩個服務功能:shell

1一個是提供相似telnet遠程聯機服務器的服務,即上面提到的SSH服務;vim

2另外一個是相似FTP服務的sftp-server,藉助SSH協議來傳輸數據的,提供更安全的SFTP服務(vsftp.proftpwindows

 特別提醒:安全

 SSH客戶端(ssh命令)還包含一個頗有用的遠程安全拷貝命令scp,也是經過ssh協議工做的。bash

1.3 ssh服務排錯說明

1.3.1 ssh服務鏈接排錯過程

image.png 

1.3.2 測試ssh服務是否開啓

方法1telnet 10.0.0.41 22服務器

說明:正確標準的方式退出telnet鏈接,按ctrl+]鍵,切換到telnet命令行,輸入quit命令進行退出網絡

方法2: ss -lntup |grep 22

[root@m01 ~]# ss -lntup |grep 22

tcp    LISTEN     0      128             :::22               :::*      users:(("sshd",1188,4))

tcp    LISTEN     0      128             *:22               *:*      users:(("sshd",1188,3))

方法3netstat -lntup

方法4nmap -p 22 10.0.0.41

方法5nc 10.0.0.41 22

1.3.3 一個服務啓動始終沒法啓動起來

(1)查看日誌

(2)檢查服務端口有沒有衝突,若是衝突則從新指定一個端口  例:rsync --daemon --port=874

[root@backup ~]# killall rsync

rsync: no process killed

[root@backup ~]# rsync --daemon --port=874

[root@backup ~]# netstat -lntup |grep rsync

tcp        0      0 0.0.0.0:874                 0.0.0.0:*                 LISTEN      1758/rsync          

tcp        0      0 :::874                      :::*                     LISTEN      1758/rsync          

第2章 遠程管理服務

2.1 SSH遠程登陸主機

image.png 

2.2 telnet服務部署過程(默認telnet遠程管理服務不支持root用戶登陸)

2.2.1 第一個里程碑:安裝telnet服務軟件

yum install -y telnet telnet-server

2.2.2 第二個里程碑:配置telnet服務能夠被xinetd服務管理

vim /etc/xinetd.d/telnet

   修改    disable         = no

[root@m01 ~]# vim /etc/xinetd.d/telnet

# default: on

# description: The telnet server serves telnet sessions; it uses \

#       unencrypted username/password pairs for authentication.

service telnet

{

        flags           = REUSE

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/sbin/in.telnetd

        log_on_failure  += USERID

        disable         = no                 --------表示telnet願意被xinetd管理

}

2.2.3 第三個里程碑:啓動xinetd服務

/etc/init.d/xinetd start

[root@m01 ~]# /etc/init.d/xinetd start

Starting xinetd:                                           [  OK  ]

[root@m01 ~]# netstat -lntup |grep 23

tcp        0      0 :::23                       :::*                    LISTEN      1708/xinetd 

這時候服務名不叫telnet了,叫xineted

[root@m01 ~]# telnet 10.0.0.41

Trying 10.0.0.41...

Connected to 10.0.0.61.

Escape character is '^]'.

CentOS release 6.9 (Final)

Kernel 2.6.32-696.el6.x86_64 on an x86_64

backup login: wuhuang

Password:  

利用wireshark軟件進行抓包

1. 實現確認ssh遠程協議進行數據的加密,telnet遠程協議未對數據進行加密處理

2. 實現觀察tcp三次握手過程和四次揮手過程

2.3 SSH遠程鏈接服務與telnet服務區別

1telnet是不安全的遠程鏈接,鏈接內容是明文的; ssh是加密的遠程鏈接,鏈接內容是加密的。

2SSH服務默認支持root用戶登陸,telnet服務默認不支持root用戶登陸

2.4 tcpdump抓包命令

tcpdump -i eth0 -nn -c 5 "port 53"

-i             ------指定抓取哪個網卡上產生數據包流量

--nn        ------抓取數據包中端口信息以數字方式顯示

-c            -----表示抓取的數據包數量

"port 53"  ----- 雙引號裏面表示搜索數據包的條件

-w             -----將抓取數據保存到指定文件中

-r              -----對保存的數據包文件進行讀取

[root@m01 ~]# tcpdump -i eth0 -nn -c 8 "port 22"

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

10:32:52.885672 IP 10.0.0.61.22 > 10.0.0.1.51651: Flags [P.], seq 1975289928:1975290136, ack 3602557944, win 634, length 208

10:32:52.887370 IP 10.0.0.1.51651 > 10.0.0.61.22: Flags [P.], seq 1:65, ack 208, win 256, length 64

10:32:52.891085 IP 10.0.0.61.22 > 10.0.0.1.51651: Flags [P.], seq 208:496, ack 65, win 634, length 288

10:32:52.893261 IP 10.0.0.61.22 > 10.0.0.1.51651: Flags [P.], seq 496:656, ack 65, win 634, length 160

10:32:52.893484 IP 10.0.0.1.51651 > 10.0.0.61.22: Flags [.], ack 656, win 254, length 0

2.5 SSH知識要點總結

SSH是安全的加密協議,用於遠程鏈接linux服務器。

SSH默認端口是22,安全協議版本SSHv2,除了2以外還有SSHv1(有漏洞)。

SSH服務端主要包含兩個服務功能SSH遠程鏈接和SFTP服務。

Linux SSH客戶端包含ssh遠程鏈接命令,以及遠程拷貝scp命令等。

第3章 SSH服務詳解

SSH服務由服務端軟件OpenSSHopenssl)和客戶端(常見的有SSH),SecureCRTPuttyxshell組成,SSH服務默認使用22端口提供服務,它有兩個不兼容的SSH協議版本,分別是1.x2.x

3.1 linux系統中主要的兩個數據加密軟件(大禮包)

3.1.1 openssh

[root@m01 ~]# rpm -qf `which ssh`

openssh-clients-5.3p1-122.el6.x86_64

[root@m01 ~]# rpm -ql openssh-clients

/etc/ssh/ssh_config            -----SSH客戶端配置文件

/usr/bin/.ssh.hmac             

/usr/bin/scp                  -----遠程複製命令

/usr/bin/sftp                  ----遠程文件傳輸服務-

/usr/bin/slogin                ----遠程登陸命令

/usr/bin/ssh                  ----實時遠程登陸管理主機命令

/usr/bin/ssh-add

/usr/bin/ssh-agent

/usr/bin/ssh-copy-id           ----ssh服務分發公鑰命令

/usr/bin/ssh-keyscan

實例:

[root@m01 ~]# slogin 10.0.0.61

The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.

RSA key fingerprint is 57:3f:64:68:95:4d:99:54:01:33:ab:47:a0:72:da:bf.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '10.0.0.61' (RSA) to the list of known hosts.

root@10.0.0.61's password:

Last login: Mon Jan 29 08:38:05 2018 from 10.0.0.1

[root@m01 ~]#

 openssh-clients總結(客戶端)

/etc/ssh/ssh_config       --- ssh客戶端配置文件

    /usr/bin/.ssh.hmac       --- ssh服務的算法文件

    /usr/bin/scp             --- 基於ssh協議,實現遠程拷貝數據命令

    /usr/bin/sftp            --- 基於ssh協議,實現數據傳輸密命令

    /usr/bin/slogin          --- 遠程登陸主機鏈接命令    

    /usr/bin/ssh             --- 遠程登陸主機鏈接命令

    /usr/bin/ssh-add  --- 此參數必須和ssh-agent命令結合使用,將祕鑰信息註冊到ssh-agent代理服務中

    /usr/bin/ssh-agent       --- 啓動ssh認證代理服務命令

    /usr/bin/ssh-copy-id     --- 遠程分發公鑰命令(ok

/usr/bin/ssh-keyscan     --- 顯示本地主機上默認的ssh公鑰信息(ok

[root@m01 ~]# rpm -ql openssh-server

/etc/pam.d/ssh-keycat

/etc/pam.d/sshd

/etc/rc.d/init.d/sshd                -----ssh服務啓動腳本文件

/etc/ssh/sshd_config               ----ssh服務配置文件

/etc/sysconfig/sshd

/usr/libexec/openssh/sftp-server

/usr/libexec/openssh/ssh-keycat

/usr/sbin/.sshd.hmac

/usr/sbin/sshd                    -----ssh服務進程啓動命令

[root@m01 ~]# ps -ef |grep sshd

root       1188      1  0 08:36 ?        00:00:00 /usr/sbin/sshd

root       1226   1188  0 08:38 ?        00:00:01 sshd: root@pts/0

root       2378   1228  0 18:26 pts/0    00:00:00 grep sshd

[root@m01 ~]# /etc/init.d/sshd stop

Stopping sshd:                                             [  OK  ]

[root@m01 ~]# ps -ef |grep sshd

root       1226      1  0 08:38 ?        00:00:01 sshd: root@pts/0

root       2396   1228  0 18:27 pts/0    00:00:00 grep sshd

[root@m01 ~]# /usr/sbin/sshd

[root@m01 ~]# ps -ef |grep sshd

root       1226      1  0 08:38 ?        00:00:01 sshd: root@pts/0

root       2398      1  0 18:28 ?        00:00:00 /usr/sbin/sshd

root       2400   1228  0 18:28 pts/0    00:00:00 grep sshd

 

  openssh-server總結(服務端):

/etc/rc.d/init.d/sshd      --- ssh服務端啓動腳本命令

   /etc/ssh/sshd_config      --- ssh服務端配置文件

   /usr/sbin/sshd           --- 啓動ssh服務進程命令   

  擴展說明:sshd服務主要的兩個進程

   /usr/sbin/sshd         --- 此進程對客戶端第一次鏈接ssh服務端有影響

   sshd: root@pts/0       --- 一旦ssh鏈接成功,是否能夠始終保持鏈接有次進程決定

代理服務中

/usr/bin/ssh-agent            --- 啓動ssh認證代理服務命令

/usr/bin/ssh-copy-id          --- 遠程分發公鑰命令

/usr/bin/ssh-keyscan          --- 顯示本地主機上默認的ssh公鑰信息

3.1.2 openssl:(https

OpenSSH同時支持SSH1.x2.x。用SSH 2.x的客戶端程序不能鏈接到SSH 1.x的服務程序上。

SSH服務端是一個守護進程(daemon),它在後臺運行並響應來自客戶端的鏈接請求。SSH服務端的進程名爲sshd,負責實時監聽遠程SSH客戶端的遠程鏈接請求,並進行處理,通常包括公共密鑰認證,密鑰交換,對稱密鑰加密和非安全鏈接等。這個SSH服務就是咱們前面基礎系統優化中保留開機自啓動的服務之一。

ssh客戶端包含ssh以及像scp(遠程拷貝),slogin(遠程登陸),sftp(安全FTP文件傳輸)等應用程序。

ssh的工做機制大體是本地的ssh客戶端先發送一個鏈接請求到遠程的ssh服務端,服務端檢查鏈接的客戶端發送的數據包和IP地址,若是確認合法,就會發送密鑰發回給服務端,自此鏈接創建。

3.2 ssh協議實現加密技術原理

3.2.1  公鑰和私鑰

1)利用了公鑰和私鑰實現數據加密和解密(公鑰:鎖頭  私鑰:鑰匙)

2)利用公鑰和私鑰實現了認證機制,公鑰能夠在網絡中傳輸,私鑰在本地主機保存

ssh_host_dsa_key

ssh_host_dsa_key.pub   

ssh_host_rsa_key

ssh_host_rsa_key.pub

 

[root@m01 ~]# ssh-keyscan 172.16.1.61

# 172.16.1.61 SSH-2.0-OpenSSH_5.3

172.16.1.61 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA9a1gvu8SLfmLdbARr3jhPAl5pofirPmgulYLl2af6xp2W0wevd3+cxmtFUDCLWFWx2u6iifNSvZ1NgQ/cyZn0A3BMfVLReb6kIttPIsJ1N8YMB7mB3kfpu8zo1a94g6imzrMhk/rcerWoRJ7fHumKAheIQ8d3K9kn6iLNbAIpHWY83ndE2ArsDOBEZaYtlQIwCs1k54kA/luxSkjZkuQzWvd+CDIbIyP+Ha/DPVrKl+LH15CZ7iBhSj4eoPxDEQLUPuaQ4IrCM3U+ts8PYw6+8DYCHUoeYxuw4OamstkS669bb197Pzfh8TJewpzHrxBPCxDrhwU+Q/11BA8Q0TCFQ==

 

[root@m01 ~]# ssh-keyscan -t dsa 172.16.1.61   根據IP查看對應主機的公鑰

# 172.16.1.61 SSH-2.0-OpenSSH_5.3

172.16.1.61 ssh-dss AAAAB3NzaC1kc3MAAACBAKSV66UzxqEzt8TKEFcyQtYPMC3y7YeZh7YVsy+E4KaMQAEVzOwcp2b6IXFyMDGNrystP9jfV7cXKC+2S7LkayJnOr8l3NgmzY3eXQs3EqkhgsN7qqv+/NCrDJ3oNChYGCCnq5OdRbHGfXijPYfF41i4xDJaSx8oTLx1rvpxYievAAAAFQCl9Ri/GrPTxMQ0KMefCV2kW0oIdwAAAIA7dvGR8RWPeoTG/xqU5p5ARWZFYMXEf/B7dvYTXg/ULN640LDh20iGVjxK5L4TwIuaJHt5c5LbOZpNuO2+zeMDjaEcwQpEUAQEev/xToPR8DTnVK6rGX65S4+0LwEd+J9A5+khOdKVfTHE+g+pE2Xq9o902SHQ91KXQT2kBJl4yQAAAIBc0DmG6tQCnKrxyiTR4GWCNzhq3P/9nzkendAyPce91uEVyvNa5LtI1xP0db/Ez2ldCpnpC6LWWvUNXqSKu4X8Mol24ATTgEilGFQ8FjpcG8WyzjQarazr5a5cwf/bDagvkD6sUiba/+kolUeD2s2tq9CkVaJEOkrSJaNVFJap4Q==

說明:-t        ----指定加密類型(默認爲rsa

3私鑰和公鑰的存儲位置

[root@m01 ~]#  ls /etc/ssh

moduli      sshd_config      ssh_host_dsa_key      ssh_host_key      ssh_host_rsa_key

ssh_config  sshd_config.bak  ssh_host_dsa_key.pub  ssh_host_key.pub  ssh_host_rsa_key.pub

說明:

1.ssh_host_key就是私鑰(裏面都是亂碼)

2.後面帶.pub的文件就是公鑰(如:ssh_hosts_pub

 

3.2.2 sshv1sshv2版本比較

v1版本鑰匙和鎖頭默認不會變化,數據傳輸不安全

v2版本鑰匙和鎖頭會常常變化,數據傳輸更安全

 

3.2.3 ssh加密算法v2.x

SSH 1.x的聯機過程當中,當Server接受Client端的Private Key後,就再也不針對該次聯機的Key pair進行檢驗。此時如有惡意***針對該聯機的Key pair對插入惡意的程序代碼時,因爲服務端你不會再檢驗聯機的正確性,所以可能會接收該程序代碼,從而形成系統被黑掉的問題。

爲了改正這個缺點,SSH version 2 多加了一個確認聯機正確性的Diffie-Hellman機制,在每次數據傳輸中,Server都會以該機制檢查數據的來源是否正確,這樣,能夠避免聯機過程當中被插入惡意程序代碼的問題。也就是說,SSH version 2 是比較安全的。

因爲SSH1協議自己存在較大安全問題,所以,建議你們儘可能都用SSH2的聯機模式。而聯機版本的設置則須要在SSH主機端與客戶端均設置好才行。

3.3 SSH服務認證類型

3.3.1 基於密碼的認證

基於口令的安全驗證的方式就是你們如今一直在用的,只要知道服務器的SSH鏈接帳號和口令(固然也要知道對應服務器的IP及開放的SSH端口,默認爲22),就能夠經過ssh客戶端登陸到這臺遠程主機。此時,聯機過程當中全部傳輸的數據都是加密的。

[root@m01 ~]# ssh -p22 root@10.0.0.7

root@10.0.0.7's password:

Last login: Mon Jan 29 08:38:11 2018 from 10.0.0.1

3.3.2 基於祕鑰的認證(實現免密碼管理)

基於密鑰的安全驗證方式是指,須要依靠密鑰,也就是必須事先創建一對密鑰對,而後把公用密鑰(Public key)放在須要訪問的目標服務器上,另外,還須要把私有密鑰(Private key)放到SSH的客戶端或對應的客戶端服務器上。

   私鑰不能在網絡中傳輸-----私鑰能夠解密公鑰

   公鑰能夠在網絡中傳輸-----公鑰不能解密私鑰

此時,若是要想鏈接到這個帶有公用密鑰的SSH服務器,客戶端SSH軟件或客戶端服務器就會向SSH服務器發出請求,請求用聯機的用戶密鑰進行安全驗證。SSH服務器收到請求以後,會先在該SSH服務器上鍊接的用戶的家目錄下尋找事先放上去的對應用戶的公用密鑰,而後把它和鏈接的SSH客戶端發送過來的公用密鑰進行比較。若是兩個密鑰一致,SSH服務器就用公用密鑰加密質詢並把它發送給SSH客戶端。

SSH客戶端收到質詢以後就能夠用本身的私鑰解密,再把它發送給SSH服務器。使用這種方式,須要知道聯機用戶的密鑰文件。與第一種基於口令驗證的方式相比,第二種方式不須要在網絡上傳送口令密碼,因此安全性更高了,這時咱們也要注意保護咱們的密鑰文件,特別是私鑰文件,一旦被***獲取,危險就很大了。

基於密鑰的安全認證也有windows客戶端和linux客戶端的區別。在這裏咱們主要介紹的是linux客戶端和linux服務端之間的密鑰認證。

image.png 

總結:

. 在管理端建立出祕鑰對(建立兩個信物)

. 管理端將公鑰(鎖頭)傳輸給被管理端,鎖頭傳輸給被管理端要基於密碼方式認證

. 管理端向被管理端發出創建鏈接請求

. 被管理端發出公鑰質詢

. 管理端利用私鑰解密公鑰,進行公鑰質詢響應

. 被管理端接收到質詢響應,確認基於祕鑰認證成功

3.4 基於祕鑰認證配置部署過程

3.4.1 第一個里程碑:管理服務器上建立祕鑰對

ssh-keygen -t rsa

[root@m01 ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):               ---確認私鑰保存路徑(默認路徑)

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):                  ---確認私鑰文件是否設置密碼(設置爲空) 

Enter same passphrase again:                              ---確認私鑰文件是否設置密碼(設置爲空)

Your identification has been saved in /root/.ssh/id_rsa.          ---私鑰保存位置

Your public key has been saved in /root/.ssh/id_rsa.pub.         ---公鑰保存位置

The key fingerprint is:

37:a5:23:85:89:5f:62:93:40:d6:9c:3d:04:d0:07:a8 root@m01

The key's randomart image is:

+--[ RSA 2048]----+

|     .=*o*.      |

|     ..o=++      |

|     .. B.o..    |

|    E  o = o     |

|        S =      |

|         o o     |

|                 |

|                 |

|                 |

+-----------------+

命令說明:

1)建立密鑰對時,要你輸入的密碼,爲進行密鑰對驗證時輸入的密碼(和linux角色登陸的密碼徹底沒有關係);

2)若是咱們要進行的是SSH免密碼鏈接,那麼這裏密碼爲空跳過便可。

3)若是在這裏你輸入了密碼,那麼進行SSH密鑰對匹配鏈接的時候,就須要輸入這個密碼了。(此密碼爲獨立密碼)

4)用戶家目錄下的.ssh隱藏目錄下會生成:id_rsa id_rsa.pub 兩個文件。id_rsa是用戶的私鑰;id_rsa.pub則是公鑰

 建立完後,會在當前用戶的宿主目錄.ssh/下生成一個公鑰與私鑰

[root@m01 ~]#  ls .ssh/

id_rsa  id_rsa.pub

 

3.4.2 第二個里程碑:分發公鑰給被管理端主機

ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.31

[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.1.31

The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established.

RSA key fingerprint is 57:3f:64:68:95:4d:99:54:01:33:ab:47:a0:72:da:bf.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts.

root@172.16.1.31's password: 輸入密碼

Now try logging into the machine, with "ssh 'root@172.16.1.31'", and check in:

 

  .ssh/authorized_keys

 

to make sure we haven't added extra keys that you weren't expecting.

命令說明:

-i   ---指定要進行分發的公鑰文件

root表示客戶端以什麼樣的身份登陸到服務端

若是ssh端口不是默認的22端口,須要在公鑰文件後面加參數:-p 3600

3.4.3 第三個里程碑:利於基於祕鑰方式登陸測試

[root@m01 ~]# ssh 172.16.1.31      能夠直接免密登陸

Last login: Mon Jan 29 08:37:44 2018 from 10.0.0.1

[root@nfs01 ~]# exit

3.5 實現多臺主機之間基於祕鑰的彼此相互訪問

3.5.1 第一個里程碑:啓動認證代理服務

[root@m01 ~]# eval `ssh-agent -s`

Agent pid 2602

說明:

eval這個命令,至關於執行倆次bash

3.5.2 第二個里程碑:向agent代理服務器註冊本地服務器私鑰信息

[root@m01 ~]# ssh-add

Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

3.5.3 第三個里程碑:將註冊憑證信息經過遠程登陸方式給被管理主機

[root@m01 ~]# ssh -A 172.16.1.31

Last login: Wed Jan 31 17:51:07 2018 from 172.16.1.61

[root@nfs01 ~]#

注意:

1.註冊憑證不是私鑰信息

2.被管理主機接受到後,會產生憑證信息/tmp/ssh-xxx/agent.12334

image.png 

3.6 ssh服務配置文件說明

修改SSH服務的運行參數,是經過修改配置文件/etc/ssh/sshd.config文件來實現的。
通常來講SSH服務使用默認的配置已經可以很好的工做了,若是對安全要求不高,僅僅提供SSH服務的狀況,能夠不須要修改任何配置。

[root@m01 ~]# vim /etc/ssh/sshd_config

#       $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $

 

13 #Port 22                                     --- 表示修改默認端口號信息,ssh鏈接默認端口22 

15 #ListenAddress 0.0.0.0                                      --- 指定監聽本地主機網卡地址信息 

42 #PermitRootLogin yes            --- 是否容許root用戶遠程登陸,默認容許,建議禁止root遠程登陸

65 #PermitEmptyPasswords no                                  --- 是否容許空密碼

81 GSSAPIAuthentication yes      --- 默認此參數配置信息爲yes,老是要對鏈接進行如下GSSAPI認證

122 UseDNS yes    --- 默認此參數配置信息爲yes,要對訪問過來主機信息作dns反向解析(建議設爲no——服務端

說明:

1)#號表明註釋,#號後面有空格的表示對數據內容的描述信息#號後面沒空格的表示參數信息,註釋的 參數信息是默認的參數配置

2)一旦修改了Port,那麼ssh登陸時就須要-p指定端口號,否則會登陸失敗,ssh默認登陸22端口

3)一旦修改了ListenAddress,監聽地址,那麼再也不地址範圍內的全部客戶端將沒法遠程鏈接服務器。

4) GSSAPIAuthentication yes  UseDNS yes   設爲no能夠提升鏈接速度

5)修改配置文件後,須要重啓sshd服務才能生效

image.png 

第4章 SSH服務安全配置

4.1  SSH***案例說明

SSH***網友案例:http://phenixikki.blog.51cto.com/7572938/1546669

4.1.1 如何防止SSH登陸***小結:

    1、用密鑰登陸,不用密碼登錄。

    2、牤牛陣法:解決SSH安全問題

       a.防火牆封閉SSH,指定源IP限制(局域網、信任公網)

       b.開啓SSH只監聽本地內網IPListenAddress 172.16.1.61)。

    3、儘可能不給服務器外網IP

    4、最小化(軟件安裝-受權)

    5、給系統的重要文件或命令作一個指紋

    6. 給他鎖上 chattr +i   +a

image.png 

第5章 企業面試題

5.1 給你一個端口,如何命令行查出對應的服務是什麼?

ss -lntup |grep 22

netstat -lntup |grep 22

lsof -i:22

grep "\b22/\b" /etc/services   有點耍賴,不建議使用

nmap -p 22 10.0.0.41

nc 10.0.0.41 22

5.2 若是給你一個進程名(如:ssh),如何查看對應的端口是什麼?

ss -lntup |grep sshd

netstat -lntup |grep sshd

5.3 取出sshd端口號22

netstat -lnptu |awk -F "[ :]+" '$4~/^22/{print $4}'

netstat -lnptu |awk -F "[ :]+" '!/:::/&& /sshd/{print $5}'

netstat -lnptu |awk -F "[ :]+" '/sshd/&& $5!="*"{print $5}'

netstat -lnptu |awk -F "[ :]+" '/sshd/{if ($5!="*")print $5}'

相關文章
相關標籤/搜索