ssh免秘鑰登錄


簡介

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平台。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平台。幾乎所有UNIX平台—包括HP-UXLinuxAIXSolarisDigital UNIXIrix,以及其他平台,都可運行SSH。

 

最基本的用法

SSH主要用於遠程登錄。假定你要以用戶名user,登錄遠程主機host,只要一條簡單命令就可以了。

  $ ssh user@host

如果本地用戶名與遠程用戶名一致,登錄時可以省略用戶名

 $ ssh host

SSH的默認端口是22,也就是說,你的登錄請求會送進遠程主機的22端口。使用p參數,可以修改這個端口。

  $ ssh -p 2222 user@host

上面這條命令表示,ssh直接連接遠程主機的2222端口。

下面開始部署ssh秘鑰的批量分發

第一步:安裝sshpass免交互工具並進行SSH-key的批量分發

下載epel源並更新yum倉庫

[root@controller ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@controller ~]# yum clean all -y && yum makecache

第二步:創建密鑰對文件

免交互創建密鑰對

[root@controller ~]# ssh-keygen -t dsa -f ~/.ssh/id_dsa -P ""
Generating public/private dsa key pair.
/root/.ssh/id_dsa already exists.
Overwrite (y/n)? y
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:Qn8BNpM9ZpcRUgV7ewxn0GTOoZvfn5CcqQz7Dt7xqlA root@controller
The key's randomart image is:
+---[DSA 1024]----+
|        =o..=*o+o|
|       ..+=.o..=o|
|      .  o.o..o =|
|     . .   . .o* |
|      . SE.  o. o|
|       ...  . =..|
|       . o . * ..|
|        o * + . o|
|         ++B.. ..|
+----[SHA256]-----+
[root@controller ~]# ls ~/.ssh/
id_dsa  id_dsa.pub
命令說明:
ssh-keygen:生成密鑰對命令
-t:指定密鑰對的密碼加密類型(rsa,dsa兩種)
-f:指定密鑰對文件的生成路徑包含文件名
-P(大寫):指定密鑰對的密碼

第三步:免交戶方式分發公鑰

[root@controller .ssh]# sshpass -p "123" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@192.168.128.165"

命令說明:

sshpass:專為ssh連接服務的免交戶工具

-p :指定登錄的密碼

ssh-copy-id:自動分發公鑰的工具

-i:指定公鑰路徑

-o StrictHostKeyChecking=no :不進行對方主機信息的寫入(第一次ssh連接會在know_hosts文件里記錄)

交互式分發命令

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.91.135

第四步:測試

[root@controller .ssh]# ssh root@192.168.128.165
Last login: Wed Jan 10 02:32:04 2018 from controller

編寫腳本:

#!/bin/bash
User=root
passWord=123
port=2266
function YumBuild(){
echo "正在安裝epel源yum倉庫,請稍后..."
cd /etc/yum.repos.d/ &&\
[ -d bak ] || mkdir bak
[ `find ./*.* -type f | wc -l` -gt 0 ] && find ./*.* -type f | xargs -i mv {} bak/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null
yum -y clean all &>/dev/null
yum makecache &>/dev/null
}
rpm -q sshpass &>/dev/null || yum -y install sshpass &>/dev/null
if [ $? -gt 0 ];then
YumBuild
yum -y install sshpass &>/dev/null || (echo "sshpass build error!" && exit)
fi
[ -d ~/.ssh ] || mkdir ~/.ssh;chmod 700 ~/.ssh
echo "正在創建密鑰對...."
rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/null
for ip in `cat /root/Pingip.txt`
do
ping $ip -c1 &>/dev/null
if [ $? -gt 0 ];then
echo "$ip無法ping通請檢查網絡"
continue
fi
sshpass -p "$passWord" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no -p2266 ${User}@$ip" &>/dev/null
echo "$ip 密鑰分發成功"
done

 常見報錯,

ERROR: @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

 

 解決方法

ssh-keygen -R 服務器端的ip地址

 


免責聲明!

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



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