16,SSH遠程登錄服務

1,遠程連接服務概念介紹
SSH: 系統默認配置 22 默認可以使用root用戶進行登錄 數據信息進行加密
TELNET:網絡設備默認開啓 23 默認只能使用普通用戶進行登錄 數據信息顯示明文
用wireshark抓包:分別抓SSH協議登錄包和Telnet包(一個密文,一個明文)
16,SSH遠程登錄服務
16,SSH遠程登錄服務
2,SSH協議密鑰登錄原理:
1)服務端生成密鑰對(公鑰和私鑰也就是鎖和鑰匙)
2)服務端向其他主機發起公鑰文件或者說鎖鎖存放此/root/.ssh/authorized_keys
3)服務端通過私鑰去登錄其他主機

3,操作
創建密鑰對
ssh-keygen
16,SSH遠程登錄服務
2,將公鑰或者說鎖發送到其他主機
16,SSH遠程登錄服務
免密登錄
16,SSH遠程登錄服務
4,解決第一次發送公鑰有yes/no問題
1)通過man ssh找到StrictHostKeyChecking
命令:ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.41 -o StrictHostKeyChecking=no

解決第一次發送公鑰還是要輸入密碼問題
1)先裝個sshpass工具
yum -y install sshpass
sshpass -proot123 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.41 -o StrictHostKeyChecking=no

5,批量分發公鑰到多臺主機

for i in {41,200}                   
do                  
sshpass -proot123 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.${i} -o  StrictHostKeyChecking=no                 
[ $? -eq 0 ] && echo "ok"                   
done                    

6,即使有5步驟的操作,但是生成密鑰對還是要手動回車操作,如果生產密鑰對也可以免交互,則整個步驟我們都可以實現批量管理了
來,寫一個更完善的腳步

#!/bin/bash                 
if [ -f /root/.ssh/id_rsa ];then                    
echo -------密鑰對文件已經存在--------                   
else                    
echo -------正在生成密鑰對文件--------                   
ssh-keygen -f /root/.ssh/id/id_rsa -N ''
fi

(生成密鑰對要手動回車的部分一是要指定文件位置,我們-f參數先指定,二是要確認密碼我們-N參數指定新密碼''表示後面空,就是說沒有新密碼。這樣生成密鑰對的操作
也是免交互了)

for i in {41}                   
do                  
sshpass -proot123 ssh-copy-id -i /root/.ssh/id_rsa.pub 10.0.0.${i} -o  StrictHostKeyChecking=no >/dev/null 2>&1                 
[ $? -eq 0 ] && echo "ok"                   
done                    

7,優化SSH
在所有其他主機上修改
1)監聽端口22
改成9999
2)監聽ip0.0.0.0 (這裏的所有表示,所有主機自己有的ip,一個主機可以有多個ip。你連我的時候寫上我自己的ip。不是表示來連接我的主機的ip,ssh不通過限制客戶端的ip來限制訪問,跟rysnc,nfs,nginx不一樣不要搞混了
改成監聽某個網段或ip,172.16.1.0 表示允許監聽網段或ip,ssh遠程
3)密碼驗證PasswordAuthentication yes
改爲PasswordAuthentication no 密碼登錄不了。其他主機想要登錄這個主機通過輸入賬號密碼是登不進去了,這個時候只有管理端通過密鑰對登錄了
16,SSH遠程登錄服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章