遠程管理服務(SSH)


01. 遠程管理服務概念介紹
SSH 安全的遠程連接 數據信息是加密的 22 SSH服務默認可以root用戶遠程連接 系統遠程連接
TELNET 不安全的遠程連接 數據信息是明文的 23 telnet服務默認不可以讓root用戶遠程連接 網絡設備遠程連接

補充: 什么是shell
1. 每連接登錄到一個linux系統中,就是一個shell
2. 可以一個linux系統有多個會話連接,每一個會話都是一個shell
3. 系統中用戶可以實現相互轉換,每轉換一個用戶就是一個shell
shell特點說明:
1. 一般命令行臨時配置的信息,只會影響當前shell
2. 命令配置的信息如果想生效,需要切換shell eg: 修改主機名稱

02. SSH服務連接工作原理(數據加密)
私鑰: 鑰匙
公鑰: 鎖頭
第一個步驟: 客戶端 執行遠程連接命令
第二個步驟: 客戶端 服務端 建立三次握手過程
第三個步驟: 服務端 讓客戶端進行確認是否接收服務端公鑰信息
第四個步驟: 客戶端 進行公鑰確認,接收到公鑰信息
第五個步驟: 服務端 讓客戶端確認登錄用戶密碼信息
第六個步驟: 客戶端 進行密碼信息確認
第七個步驟: 客戶端 服務端 遠程連接建立成功

私鑰和公鑰作用:
  01. 利用私鑰和公鑰對數據信息進行加密處理
  02. 利用公鑰和私鑰進行用戶身份認證

  基於密碼的方式進行遠程連接: 公鑰和私鑰只能完成數據加密過程
  基於秘鑰的方式進行遠程連接: 公鑰和私鑰可以完成身份認證工作

03. SSH遠程連接的方式
  a 基於口令的方式進行遠程連接 連接比較麻煩 連接不太安全
  b 基於秘鑰的方式進行遠程連接 連接方便 連接比較安全

基於秘鑰方式連接過程(原理)
  1. 客戶端(管理端) 執行命令創建秘鑰對
  2. 客戶端(管理端) 建立遠程連接(口令),發送公鑰信息
  3. 客戶端(管理端) 再次建立遠程連接
  4. 服務端(被管理端) 發送公鑰質詢信息(你要是能打開我的鎖頭嗎)
  5. 客戶端(管理端) 處理公鑰質詢信息(鑰匙將鎖頭打開),將質詢結果返回給服務端
  6. 服務端(被管理端) 接收到質詢結果,建立好遠程連接

04. SSH實現基於秘鑰連接的部署步驟
准備工作:
准備好一台管理服務器

第一個歷程: 管理端創建秘鑰對信息
[root@m01 ~]# ssh-keygen -t dsa (默認的是rsa) 一直回車就可以
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.

 

 

第二個歷程: 管理端需要將公鑰進行分發
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31
查看對應主機公鑰,也可以直接復制到對應文件中

第三個歷程: 進行遠程連接測試
ssh 172.16.1.41 --- 不用輸入密碼信息可以直接連接

問題:
01. 如何實現批量管理多台主機
如何編寫腳本進行批量分發公鑰???

編寫腳本最簡單方式: 堆命令

#!/bin/bash
for ip in 31 7 41
do
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.$ip
done
問題: 有交互過程
01. 需要有確認yes或no
02. 需要輸入密碼信息 OK
03. 服務端端口號變化了,如何分發公鑰

如何不用交互輸入密碼信息,進行遠程連接分發公鑰:
第一步驟: 下載安裝軟件
yum install -y sshpass

第二步驟: 執行免交互方式分發公鑰命令
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41

如何不要輸入連接yes或no的確認信息
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41 "-o StrictHostKeyChecking=no"

服務端口號發生變化,如何進行批量分發公鑰
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41 -p 52113 "-o StrictHostKeyChecking=no"

分發公鑰腳本:
[root@m01 scripts]# vim fenfa_pub_key.sh

#!/bin/bash

for ip in {1..100}
do
echo "==================== host 172.16.1.$ip pub-key start fenfa ==================== "
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.$ip "-o StrictHostKeyChecking=no" &>/dev/null
echo -e "host 172.16.1.$ip fenfa success."
echo "==================== host 172.16.1.$ip fenfa end ==================== "
echo ""
done

分發公鑰檢查腳本(批量管理腳本) --- 串型批量管理
[root@m01 scripts]# cat check_pub_key.sh

#!/bin/bash
CMD=$1
for ip in {7,31,41}
do
echo "==================== host 172.16.1.$ip check ==================== "
ssh 172.16.1.$ip $CMD
echo ""
done

05. SSH服務配置文件
/etc/ssh/sshd_config
Port 22 --- 修改服務端口信息
ListenAddress 0.0.0.0 --- 監聽地址 指定一塊網卡能夠接受遠程訪問請求 *****
PS: 指定監聽地址只能是本地網卡上有的地址
PermitEmptyPasswords no --- 是否允許遠程用戶使用空密碼登錄,默認不允許
PermitRootLogin yes --- 是否禁止root用戶遠程連接主機 建議改為no
GSSAPIAuthentication no --- 是否開啟GSSAPI認證功能 不用的時候關閉
UseDNS no --- 是否開啟反向DNS解析功能 建議進行關閉

06. SSH遠程服務防范入侵的案例
1. 用密鑰登錄,不用密碼登陸, 修改原來22端口
2、牤牛陣法:解決SSH安全問題
a.防火牆封閉SSH,指定源IP限制(局域網、信任公網)
b.開啟SSH只監聽本地內網IP(ListenAddress 172.16.1.61)。
3、盡量不給服務器外網IP
4、最小化(軟件安裝-授權)
5、給系統的重要文件或命令做一個指紋
/etc/passwd md5sum 11110000aaaabbbb 監控
inotify  實時監控
6、給他鎖上 chattr +i:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM