linux ssh認證(公鑰機)配置


一、產生背景

    在實際工作中,linux集群需要自動化的管理,市面上較常見的自動化運維工具諸如ansible,puppet,saltstack;輕量級的有pssh系列,這其中大多數工具使用的前提就是集群配置有公鑰機可免密ssh登錄集群內所有服務器,所以要先配置一台公鑰機使用。

 

二、配置實例

    1、在除公鑰機外所以服務器生成密鑰

[root@test ~]# cd /root/.ssh/
[root@test .ssh]# ll
總用量 4
-rw-r--r--. 1 root root 396 11月  1 2016 known_hosts
[root@test .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cBjbvfy9VkWLQpJESgqLHeq923mm4EF1Vb1L4wGs0IU root@test
The key's randomart image is:
+---[RSA 2048]----+
|   o  ..++*o.    |
|  + + o*oE + .  .|
| o o o+o+ = . o..|
|. . . .o o o * ..|
| . o    S o + + .|
|  . .      . +  .|
|   +        . .. |
|  . = .o      .. |
|   o ++      ..  |
+----[SHA256]-----+
[root@test .ssh]# 
[root@test .ssh]# ll
總用量 12
-rw-------. 1 root root 1679 11月  2 11:43 id_rsa
-rw-r--r--. 1 root root  391 11月  2 11:43 id_rsa.pub
-rw-r--r--. 1 root root  396 11月  1 2016 known_hosts

 

 

    2、在第一台服務器上創建authorized_keys文件,並修改權限,用以保存所有服務器的公鑰

[root@test .ssh]# touch authorized_keys
[root@test .ssh]# chmod 600 authorized_keys 
[root@test .ssh]# cat id_rsa.pub >> authorized_keys

 

 

    3、將authorized_keys文件復制到下一台服務器,並重復以上兩個步驟

[root@test .ssh]# scp authorized_keys root@192.168.0.11:~/.ssh/

 

 

    4、重復以上步驟,直至最后一台服務器,將authorized_keys文件復制到公鑰機對應目錄下

 

    

[root@test .ssh]# scp authorized_keys root@192.168.0.1:~/.ssh/
[root@test .ssh]# chmod 600 authorized_keys

 

    5、配置自動化運維工具配置文件,並刪除除公鑰機外的所有機器中的authorized_keys文件(pssh為例)

 

 

[root@test ~]# pssh -h serverlist.txt -P -p1 "rm -rf /root/.ssh/authorized_keys"

 

    6、測試公鑰機免密ssh登錄其他服務器即可

 

三、腳本實現

 

[root@Nginx bin]# yum install expect -y
[root@Nginx bin]# find / -name expect
/usr/bin/expect
[root@Nginx bin]# touch /root/.ssh/authorized_keys
[root@Nginx bin]# vim self_ssh.sh 
  1 #!/usr/bin/expect -f
  2 #
  3 set timeout 3
  4 set ip_list [open /home/jiayimeng/bin/ip r]
  5 while { [gets $ip_list line ]>=0 } {
  6     set ip [lindex $line 0]
  7     spawn ssh root@$ip
  8     expect "*yes/no:" { send "yes\r" }
  9     expect "*password:" { send "123456\r" }
 10     expect "#"
 11     send "cat /root/.ssh/id_rsa.pub | ssh root@192.168.3.25 'cat     >> .ssh/authorized_keys'\r"
 12     expect "*password:" { send "123456\r" }
 13     expect "#" { send "exit\r"}
 14     interact
 15 }
  
 ip中寫明所有機器的ip地址
except

 

 

 

 

四、總結

    在不連接外部互聯網的特定集群中,公鑰機的使用大大方便了運維人員管理維護集群,系統集成人員集成施工的一系列操作;同時,由於公鑰機的特殊,要做好公鑰機的安全工作。


免責聲明!

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



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