ssh登錄驗證及httpd初始

1、SSH登錄驗證

1.方式一:手動輸入密碼

2.方式二:基於密鑰的方式

1)生成密鑰對

[root@m01 ~]# ssh-keygen

2)推送密鑰對

1.手動方式
#管理端
[root@m01 ~]# cat .ssh/id_rsa.pub
#被管理端
[root@web01 ~]# vim .ssh/authorized_keys
[root@web01 ~]# chmod 700 .ssh/
[root@web01 ~]# chmod 600 .ssh/authorized_keys

2.命令方式:
#管理端
[root@m01 ~]# ssh-copy-id root@172.16.1.31
[root@m01 ~]# ssh-copy-id root@172.16.1.41

3)巡檢腳本

#1.巡檢腳本
[root@m01 ~]# vim xunjian.sh 
#!/bin/bash
ip='
7
31
41
'
for i in `echo $ip`;do
     echo "###############172.16.1.$i##############"
     ssh root@172.16.1.$i "$1"
done

#2.巡檢腳本
[root@m01 ~]# cat all.sh 
#!/usr/bin/bash
[ $# -ne 1 ] && echo "請輸入執行的命令" && exit 1

for i in 31 41
do
    echo "#########172.16.1.$i#####"
    ssh root@172.16.1.$i "$1"
done

2、ssh免密場景

實踐場景,用戶經過Windows/MAC/Linux客戶端鏈接跳板機免密碼登陸,跳板機鏈接後端無外網的Linux主機實現免密登陸,架構圖以下。
實踐多用戶登錄一臺服務器無密碼
實踐單用戶登錄多臺服務器免密碼

1.windows使用xshell免密登錄服務器

1.xshell --> 工具 --> 新建用戶密鑰生成嚮導
2.下一步 --> 申城公鑰對
3.下一步 --> 密鑰信息(給密鑰起名字,加密碼)
4.xshell --> 工具 --> 查看密鑰用戶管理者
5.密鑰屬性 --> 公鑰
6.將公鑰複製到服務器的.ssh目錄下的authorized_keys文件
7.受權文件

2.跳板機腳本

#!/bin/bash
#jumpserver
lb01=10.0.0.5
lb02=10.0.0.6
web01=10.0.0.7
web02=10.0.0.8
web03=10.0.0.9
nfs=10.0.0.31
backup=10.0.0.41
db01=10.0.0.51
m01=10.0.0.61
zabbix=10.0.0.71

menu(){
        cat <<-EOF
        +-------------------------+
        |     1) lb01             |
        |     2) lb02             |
        |     3) web01            |
        |     4) web02            |
        |     5) web03            |
        |     6) nfs              |
        |     7) backup           |
        |     8) db01             |
        |     9) m01              |
        |     10) zabbix          |
        |     h) help             |
        +-------------------------+
EOF
}
#菜單函數
menu

#鏈接函數
connect(){
  ping -c 1 -w 1 $1 &>/dev/null
  if [ $? -eq 0 ];then
    ssh root@$1
  else
    echo -e "\033[5;4;40;31m 別連了,個人哥,$2:$1機器都沒開!!!\033[0m"
  fi
}

#控制不讓輸入ctrl+c,z
trap "" HUP INT TSTP
while true
do
    read -p "請輸入要鏈接的主機編號:" num
    case $num in
            1|lb01)
              connect $lb01 lb01
                    ;;
            2|lb02)
              connect $lb02 lb02
                    ;;
            3|web01)
              connect $web01 web01
                    ;;
            4|web02)
              connect $web02 web02
                    ;;
            5|web03)
                  connect $web03 web03
                    ;;
            6|nfs)
              connect $nfs nfs
                    ;;
            7|backup)
                  connect $backup backup
                    ;;
            8|db01)
                   connect $db01 db01
                    ;;
            9|m01)
                    connect $m01 m01
                    ;;
            10|zabbix)
                    connect $zabbix zabbix
                    ;;
            h|help)
                    clear
                    menu
                    ;;
            close)
                    break
                    ;;
    esac
done

3、免交互expect

1.安裝expect

[root@m01 ~]# yum install -y expect

2.編寫腳本

[root@m01 ~]# vim xunjian.exp
#!/usr/bin/expect
set ip 10.0.0.31
set pass 1
set timeout 30
spawn ssh root@$ip
expect {
        "(yes/no)" {send "yes\r"; exp_continue}
        "password:" {send "$pass\r"}
}
expect "root@*"  {send "df -h\r"}
expect "root@*"  {send "exit\r"}
expect eof

4、免交互sshpass[擴展]

1.安裝

[root@m01 ~]# yum install -y sshpass

2.命令參數

[root@m01 ~]# sshpass -p 1 ssh root@10.0.0.31
[option]
-p:指定密碼
-f:從文件中取密碼
-e:從環境變量中取密碼
-P:設置密碼提示

#當鏈接不上時,多是由於沒有主機信息文件,則加入ssh免交互參數
[root@m01 ~]# sshpass -p 1 ssh -o StrictHostKeyChecking=no root@10.0.0.31

5、ssh安全優化

1.優化內容

SSH做爲遠程鏈接服務,一般咱們須要考慮到該服務的安全,因此須要對該服務進行安全方面的配置。
1.更改遠程鏈接登錄的端口
2.禁止ROOT管理員直接登陸
3.密碼認證方式改成密鑰認證
4.重要服務不使用公網IP地址
5.使用防火牆限制來源IP地址

2.配置

[root@m01 ~]# vim /etc/ssh/sshd_config
#修改ssh端口
Port 2222
#禁止使用root登陸服務器
PermitRootLogin no
#禁止使用密碼登陸服務器
PasswordAuthentication no

UseDNS                  no      # 禁止ssh進行dns反向解析,影響ssh鏈接效率參數
GSSAPIAuthentication    no      # 禁止GSS認證,減小鏈接時產生的延遲
HTTP協議

1、HTTP協議

1.什麼時http

HTTP 全稱:Hyper Text Transfer Protocol 
中文名:超文本傳輸協議

http就是將用戶的請求發送到服務器,將服務器請求到的內容傳輸回給瀏覽器,瀏覽器進行解析,解析後變成便於觀看的也買你

2.超文本

包含有超連接(Link)和各類多媒體元素標記(Markup)的文本。這些超文本文件彼此連接,造成網狀(Web),
所以又被稱爲網頁(Web Page)。這些連接使用URL表示。最多見的超文本格式是超文本標記語言HTML。

html文件 -> 包含各類各樣的元素(URL連接)-> 造成WebPage簡稱web頁面

3.什麼是URL

URL即統一資源定位符(Uniform Resource Locator),用來惟一地標識萬維網中的某一個文件

當咱們訪問: baidu.com
實際上訪問: http://www.baidu.com:80/index.html

URL由協議、主機和端口(默認爲80)以及文件名三部分構成:
#URL:  http://www.baidu.com:80/index.html
	   協議   域名          端口  請求的文件及路徑
#協議:stf、ssh、tcp、http、file
#域名:訪問的主機名字(有表明性,好記,惟一)
#端口:進入網站的門戶
#文件:真實存在於服務器上的文件

HTTP  URL  HTML三者關係
一個完整html頁面,是由不少URL組成的,而HTTP協議是用來傳輸和解析html頁面的

2、HTTP協議原理

1.原理

1.首先,當你在瀏覽器中輸入一個網址的時候(https://www.baidu.com/index.html)瀏覽器會幫你分析,你輸入的這個URL
2.其次,瀏覽器會向DNS服務器請求解析,該URL中的域名www.baidu.com,解析出百度服務器所在的IP地址
3.DNS服務器,會將解析出來的IP地址110.111.112.113並返回給瀏覽器。
4.瀏覽器接收到DNS返回的IP地址,當即與該IP所在的服務器創建TCP鏈接(80端口)。
5.瀏覽器請求文檔,也就是我們常說的html頁面,GET /index.html,併發出HTTP請求報文。
6.服務器給出響應,將請求的index.html文檔返回給瀏覽器,也就是響應HTTP請求的報文。
7.TCP鏈接響應完以後,釋放TCP鏈接。
8.最後就能顯示出,你請求的這個頁面了

2.數據報文

GET那一部份內容被稱爲:請求頭信息
GET和HTTP之間有一個空行被稱爲:請求空行
HTTP中的信息被稱爲:迴應信息
HTTP與faa之間也有個空行被稱爲:響應空行
faa部分被稱爲:主體

3、請求頁面信息

1.基本信息

#請求的URL
Request URL: https://blog.driverzeng.com/zenglaoshi/2039.html
#請求的方式
Request Method: GET
#狀態碼
Status Code: 200
#遠程主機和端口
Remote Address: 122.193.130.81:443
#
Referrer Policy: no-referrer-when-downgrade

2.請求頭部

#請求的域名
:authority: blog.driverzeng.com
#請求的類型
:method: GET
#請求的文件路徑
:path: /zenglaoshi/2039.html
#請求的協議
:scheme: https
#請求的資源類型
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
#請求過程壓縮
accept-encoding: gzip, deflate, br
#字符類型
accept-language: zh-CN,zh;q=0.9
#登陸驗證
authorization: Basic emxzX2FkbWluOjFxYXokUkZW
#緩存控制
cache-control: no-cache
#緩存驗證
cookie: PHPSESSID=7155d8f835a6580a0fbe6c930c265a40
#緩存
pragma: no-cache

upgrade-insecure-requests: 1
#用戶的客戶端
user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36

3.響應頭部

#阿里雲信息存儲時間
ali-swift-global-savetime: 1597742129
#緩存控制
cache-control: no-store, no-cache, must-revalidate
#壓縮
content-encoding: gzip
#文件類型和字符集
content-type: text/html; charset=UTF-8
#時間
date: Tue, 18 Aug 2020 09:15:29 GMT
#加密id
eagleid: 9903e79615977421289024140e
#失效時間
expires: Thu, 19 Nov 1981 08:52:00 GMT
#軟鏈接
link: <https://blog.driverzeng.com/wp-json/>; rel="https://api.w.org/"
link: <https://blog.driverzeng.com/?p=2039>; rel=shortlink
#緩存
pragma: no-cache
#web服務
server: Tengine
#狀態碼
status: 200
#跨域訪問
timing-allow-origin: *
#渲染
vary: Accept-Encoding
#各級緩存
via: cache20.l2cn1817[275,200-0,M], cache4.l2cn1817[276,0], cache4.l2cn1817[276,0], kunlun9.cn206[283,200-0,M], kunlun2.cn206[284,0]

-----cdn服務器的參數-----
x-cache: MISS TCP_MISS dirn:-2:-2
x-pingback: https://blog.driverzeng.com/xmlrpc.php
x-powered-by: PHP/7.1.21
x-swift-cachetime: 0
x-swift-savetime: Tue, 18 Aug 2020 09:15:29 GMT

4、HTTP請求方法

在HTTP請求報文中的方法(Method),是對所請求對象所進行的操做,也就是一些命令。請求報文中的操做有:
方法(Method) 含義
GET 請求讀取一個Web頁面
POST 附加一個命名資(如Web頁面)
DELETE 刪除Web頁面
CONNECT 用於代理服務器
HEAD 請求讀取一個Web頁面的頭部
PUT 請求存儲一個Web頁面
TRACE 用於測試,要求服務器送回收到的請求
OPTION 查詢特定選項
相關文章
相關標籤/搜索