天天看點

ssh批量管理分發項目實戰介紹與實踐

ssh認證類型:

基于密碼的安全驗證,批量管理?expect,pssh,sshpass

m01

機器(鑰匙)私鑰

被管理機器(鎖)公鑰

     m01

nfs01

backup

web01

1、在上面4台機器上面操作:建立使用者及密碼

useradd oldgirl

echo 123456|passwd --stdin oldgirl

id oldgirl

su - oldgirl

2、建立密鑰對

在m01上面操作如下:

[oldgirl@m01 ~]$ ssh-keygen -t dsa #建立dsa類型的密鑰對,一路按回車就生成了密鑰對

[oldgirl@m01 ~]$ pwd

/home/oldgirl

[oldgirl@m01 ~]$ ll .ssh/

total 8

-rw------- 1 oldgirl oldgirl 668 Aug 15 20:49 id_dsa  #鑰匙

-rw-r--r-- 1 oldgirl oldgirl 601 Aug 15 20:49 id_dsa.pub  #鎖

分發密鑰:

ssh預設22端口,分發方法

ssh更改過的ssh端口分發方法

在backup伺服器檢視公鑰已拷貝成功:

[oldgirl@backup ~]$ pwd

[oldgirl@backup ~]$ ll .ssh/

total 4

-rw------- 1 oldgirl oldgirl 601 Aug 15 21:03 authorized_keys

測試:成功标志如下在m01機器上面操作:批量查詢,不用輸入密碼就說明已經成功了。

[oldgirl@m01 ~]$ whoami

oldgirl

[oldgirl@m01 ~]$ mkdir scripts

[oldgirl@m01 ~]$ cd scripts/

[oldgirl@m01 scripts]$ vi view_ip.sh

ssh [email protected] /sbin/ifconfig eth0

ssh [email protected] /sbin/ifconfig eth0

ssh [email protected] /sbin/ifconfig eth0

<a href="https://s2.51cto.com/wyfs02/M02/9E/9A/wKiom1mS9wqQWcugAAEE8_atK5I969.jpg" target="_blank"></a>

企業裡實作ssh方案:3種

1、直接root權限(條件允許root ssh登入)

2、sudo提權實作密鑰權限的使用者拷貝

在nfs伺服器上面:visudo尾部添加如下權限:

在nfs服務上面操作

<code>[root@nfs01 oldgirl]</code><code># echo "oldgirl ALL= NOPASSWD:/usr/bin/rsync" &gt;&gt;/etc/sudoers #賦予oldgirl rsync權限。</code>

<code>[root@nfs01 oldgirl]</code><code># visudo -c #檢查文法是否錯誤</code>

<code>/etc/sudoers</code><code>: parsed OK</code>

<code>然後在m01機器上面操作</code>

<code>[oldgirl@m01 ~]$ </code><code>scp</code> <code>~</code><code>/hosts</code> <code>[email protected]:~  </code><code>##先把家目錄下hosts模闆拷貝到31機器的oldgirl的家目錄下。</code>

<code>[oldgirl@m01 ~]$ </code><code>ssh</code> <code>-p22 -t  </code><code>sudo</code> <code>rsync</code> <code>~</code><code>/hosts</code> <code>/etc/hosts</code> <code>##遠端到31機器上面,用rsync 提權把家目錄的hosts檔案替換到/etc/hosts</code>

<code>還可以用腳本批量分發實作:fenfa.sh腳本,然後sh fenfa.sh或者</code><code>bash</code> <code>fenfa.sh</code>

<code>[oldgirl@m01 ~]$ </code><code>cat</code> <code>fenfa.sh </code>

<code>scp</code> <code>-P22 ~hosts [email protected]:~</code>

<code>ssh</code> <code>-p22 -t [email protected] </code><code>sudo</code> <code>rsync</code> <code>~</code><code>/hosts</code> <code>/etc/hosts</code>

還可以用rsync增量,加密傳輸:

1、增量 (scp是全量,rsync是增量)

2、加密(scp和rsync都是加密)

3、利用suid來實作拷貝(思維拓展了解)

先在nfs上面用root登入給予rsync指令的檔案賦予屬主s權限。

[oldgirl@nfs01 ~]$ su - root

Password: 

[root@nfs01 ~]# which rsync

/usr/bin/rsync

[root@nfs01 ~]# ll `which rsync`

-rwxr-xr-x 1 root root 414968 Apr 30  2014 /usr/bin/rsync

[root@nfs01 ~]# chmod u+s /usr/bin/rsync 

-rwsr-xr-x 1 root root 414968 Apr 30  2014 /usr/bin/rsync

<code>[oldgirl@m01 ~]$ </code><code>scp</code> <code>~</code><code>/hosts</code> <code>:~  </code><code>##先把家目錄下hosts模闆拷貝到31機器的oldgirl的家目錄下。</code>

<code>[oldgirl@m01 ~]$ </code><code>ssh</code> <code>[email protected] </code><code>rsync</code> <code>~</code><code>/hosts</code> <code>/etc/hosts</code> <code>##遠端到31機器上面,用rsync把家目錄的hosts檔案替換到/etc/hosts</code>

<code>本文轉自sandshell部落格51CTO部落格,原文連結http://blog.51cto.com/sandshell/1956607如需轉載請自行聯系原作者                              sandshell</code>

繼續閱讀