- 遠(yuǎn)程管理服務(wù)介紹
SSH: 服務(wù)端口 22 對(duì)遠(yuǎn)程傳輸數(shù)據(jù)進(jìn)行加密 默認(rèn)支持root用戶遠(yuǎn)程連接
telnet: 服務(wù)端口 23 對(duì)遠(yuǎn)程傳輸數(shù)據(jù)明文顯示 默認(rèn)禁止root用戶遠(yuǎn)程連接
02 遠(yuǎn)程服務(wù)通訊原理:
01. 客戶端 ---> 服務(wù)端 建立三次握手
02. 客戶端 ---> 服務(wù)端 SSH遠(yuǎn)程連接請(qǐng)求
03. 服務(wù)端 ---> 客戶端 SSH遠(yuǎn)程連接確認(rèn)信息 確認(rèn)是否建立連接/確認(rèn)是否接受公鑰信息
04. 客戶端 ---> 服務(wù)端 發(fā)送確認(rèn)連接信息
05. 服務(wù)端 ---> 客戶端 發(fā)送公鑰信息 /etc/ssh/公鑰信息
06. 客戶端 ---> 服務(wù)端 接受公鑰保存 進(jìn)行確認(rèn) ~/.ssh/know_hosts
07. 服務(wù)端 ---> 客戶端 詢問連接密碼信息
08. 客戶端 ---> 服務(wù)端 登錄密碼信息
09. 服務(wù)端 ---> 客戶端 最終確認(rèn)
PS: 基于密碼建立遠(yuǎn)程通訊過程
-
遠(yuǎn)程服務(wù)建立方式
a 基于密碼登錄方式
b 基于秘鑰登錄方式 私鑰 公鑰==========================================
補(bǔ)充: 秘鑰作用- 利用秘鑰對(duì)數(shù)據(jù)信息進(jìn)行加密處理
- 利用秘鑰信息進(jìn)行用戶身份認(rèn)證
==========================================
基于秘鑰登錄原理過程:
- 管理端 ---> 被管理端 管理端創(chuàng)建秘鑰對(duì),將公鑰進(jìn)行發(fā)送
- 管理端 ---> 被管理端 發(fā)送遠(yuǎn)程連接請(qǐng)求
- 被管理端 ---> 管理端 進(jìn)行公鑰質(zhì)詢
- 管理端 ---> 被管理端 響應(yīng)公鑰質(zhì)詢信息
- 被管理端 ---> 管理端 公鑰質(zhì)詢結(jié)果確認(rèn)
-
基于秘鑰連接配置過程
第一個(gè)里程: 創(chuàng)建秘鑰對(duì)信息 管理端服務(wù)器(10.0.0.61)
[root@web01 ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
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.
The key fingerprint is:
SHA256:SKILYzPt2d158FOzekqHjHaW8ITok1eboeXi1kn3lBE root@web01
The key's randomart image is:
+---[DSA 1024]----+
| |
| E |
| . . .|
| .. o .. . . |
|o+.. ..S+ = o o|
|.o+.o o o #.B.oo |
| .o . = Oo/ooo |
| =.*o+. . |
| .. oo |
+----[SHA256]-----+
[root@web01 ~]# ll ~/.ssh/
total 12
-rw------- 1 root root 668 Aug 20 11:16 id_dsa
-rw-r--r-- 1 root root 600 Aug 20 11:16 id_dsa.pub
-rw-r--r-- 1 root root 171 Aug 20 10:42 known_hosts第二個(gè)里程: 將公鑰進(jìn)行發(fā)送 管理端服務(wù)器(10.0.0.61)
ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31第三個(gè)里程: 進(jìn)行基于秘鑰登錄連接測(cè)試
ssh 172.16.1.31
ssh 172.16.1.31 hostname需求: 管理端(10.0.0.61) --- 多臺(tái)被管理端需要管理 100臺(tái)
如何批量分發(fā)公鑰 --- shell腳本免交互批量分發(fā)公鑰腳本
[root@m01 ~]# cat /server/scripts/distribute_key.sh!/bin/bash
. /etc/init.d/functions
創(chuàng)建秘鑰對(duì)
if [ ! -f /root/.ssh/id_dsa ]
then
ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" >/dev/null
action "key pair create" /bin/true
else
action "key pair already exists" /bin/false
fi
# 分發(fā)公鑰信息
for ip in 7 31 41
do
sshpass -p654321 ssh-copy-id -i ~/.ssh/id_dsa.pub 172.16.1.$ip -o StrictHostKeyChecking=no &>/dev/null
if [ $? -eq 0 ]
then
action "host 172.16.1.$ip pub_key distribute" /bin/true
echo ""
else
action "host 172.16.1.$ip pub_key distribute" /bin/false
echo ""
fi
done
免交互批量檢查公鑰腳本
[root@m01 ~]# cat /server/scripts/check_key.sh
#!/bin/bash
. /etc/init.d/functions
# 檢查公鑰信息
for ip in 7 31 41
do
ssh 172.16.1.$ip hostname &>/dev/null
if [ $? -eq 0 ]
then
action "host 172.16.1.$ip connect" /bin/true
echo ""
else
action "host 172.16.1.$ip connect" /bin/false
echo ""
fi
done
問題: 如何免交互分發(fā)密碼
01. 不要輸入yes確認(rèn)信息
ssh 172.16.1.31 -o StrictHostKeyChecking=no
ssh-copy-id -i ~/.ssh/id_dsa.pub 172.16.1.31 -o StrictHostKeyChecking=no
=======================================================================
補(bǔ)充: 理解分發(fā)公鑰原理過程 ssh-copy-id
1) 利用ssh和遠(yuǎn)程主機(jī)建立連接
2) 將本地公鑰文件信息傳輸?shù)竭h(yuǎn)程主機(jī)上
3) 遠(yuǎn)程主機(jī)收到公鑰信息 會(huì)保存到~/.ssh/authorized_keys 并且授權(quán)為600
=======================================================================
02. 不要輸入密碼信息
yum install -y sshpass
sshpass - noninteractive ssh password provider (提供一個(gè)ssh密碼信息, 進(jìn)行非交互ssh連接)
sshpass -p654321 ssh-copy-id -i ~/.ssh/id_dsa.pub 172.16.1.31 -o StrictHostKeyChecking=no