ssh key 免密碼登錄服務器,批量分發管理以及掛載遠程目錄的sshfs安全
第一部分:使用ssh key 實現服務器間的免密碼交互登錄bash
步驟1: 安裝openssh-clients服務器
[root@001 ~]# yum install openssh-clients -y網絡
步驟2: 建立用戶,全部機器同時操做,可直接使用rootssh
[root@001 ~]# useradd test #若是使用root,這裏跳過函數
[root@001 ~]# echo "123456"|passwd --stdin test #若是使用root,這裏跳過加密
步驟3: 用 ssh-key-gen 在本地主機上建立公鑰和密鑰spa
[root@001 ~]# su - test #切換到新建的用戶,若是直接使用root跳過這裏3d
[test@001 ~]$ ssh-keygen #所有回車 blog
命令說明:
ssh-keygen:生成密鑰對命令
-t:指定密鑰對的密碼加密類型(rsa,dsa兩種)
-f:指定密鑰對文件的生成路徑包含文件名
-P(大寫):指定密鑰對的密碼
步驟4:用 ssh-copy-id 把公鑰複製到遠程主機上
[test@001 ~]$ ssh-copy-id -i .ssh/id_rsa.pub test@192.168.1.233 #使用root用戶名需改稱root #上面交互yes 而後輸入密碼
[test@001 ~]$ ssh-copy-id -i .ssh/id_rsa.pub test@192.168.1.244 #使用root用戶名需改稱root #上面交互yes 而後輸入密碼
---ssh-copy-id命令能夠把本地主機的公鑰複製到遠程主機的authorized_keys文件上,ssh-copy-id命令也會給遠程主機的用戶主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys必須設置爲600。
-i:指定公鑰文件
[注: ssh-copy-id 把密鑰追加到遠程主機的 .ssh/authorized_key 上.]
[注: 你如今已經能夠免密登陸到了遠程主機上,實現分發只要編輯腳本直接scp到目標服務器以下:]
---------------------------------------這是分割線---------------------------------------
第二部分:使用ssh key + rsync 實現批量管理
[root@001 ~]# echo 'test ALL=(ALL) NOPASSWD:/usr/bin/rsync' >>/etc/sudoers #讓目標機器的test用戶有執行rsync權限
1.批量分發文件示例腳本
#!/bin/bash
#腳本操做注意:1.將文件複製到隨意目錄而後進入目錄操做2.文件不能使用絕對路徑
#腳本原理:使用文件[$1]scp複製到用戶的家目錄而後使用rsync 同步到相應目錄【$2】
. /etc/rc.d/init.d/functions #加入系統函數庫
if [ $# -ne 2]
then
echo "請輸入參數【本地文件][遠程目錄]"
exit 1
fi
for n in 233 #IP用空格隔開
do
scp -p22 -r $1 test@192.168.1.$n:~ &>/dev/null #第一條是將某文件發送到目標機器的家目錄
ssh -t test@192.168.1.$n sudo rsync $1 $2 &>/dev/null #次日是將某個文件分發到目標機器的具體位置
if [ $? -eq 0 ]
then
action "分發 $1 成功 " /bin/true
else
action "分發 $1 成功 " /bin/false
fi
done
---------------------------------------這是分割線---------------------------------------
2.批量執行命令示例腳本
#!/bin/bash
if [ $# -ne 1]
then
echo "請輸入參數"
exit 1
fi
for n in 233
do
ssh -p22 test@192.168.1.$n $1
done
---------------------------------------這是分割線---------------------------------------
第三部分:sshfs遠程掛載+免密碼登錄,實現遠程掛載
什麼是SSHFS:
SSHFS(Secure SHell FileSystem)是一個客戶端,可讓咱們經過 SSH 文件傳輸協議(SFTP)掛載遠程的文件系統而且在本地機器上和遠程的目錄和文件進行交互。
SFTP 是一種經過 SSH 協議提供文件訪問、文件傳輸和文件管理功能的安全文件傳輸協議。由於 SSH 在網絡中從一臺電腦到另外一臺電腦傳輸文件的時候使用數據加密通道,而且 SSHFS 內置在 FUSE(用戶空間的文件系統)內核模塊,容許任何非特權用戶在不修改內核代碼的狀況下建立他們本身的文件系統。
使用 SSHFS 客戶端,在本地 Linux 機器上掛載遠程的 Linux 文件系統或者目錄步驟。
[root@002-minion ~]# yum install sshfs #只要在客戶端安裝便可
[root@002-minion ~]# sshfs root@192.168.1.222:/opt /data
The authenticity of host '192.168.1.222 (192.168.1.222)' can't be established.
RSA key fingerprint is c1:7b:29:ca:33:f2:84:b8:c5:91:d6:a5:99:60:46:8e.
Are you sure you want to continue connecting (yes/no)? yes #第一部分介紹了免密碼,若是操做過能夠實現免密碼交互
#卸載命令:fusermount -u /opt/s109
[root@001 ~]#echo '/usr/bin/sshfs root@192.168.1.222:/opt /data' >>/etc/rc.loal
使用下例中ssky-keygen和ssh-copy-id,僅需經過3個步驟的簡單設置而無需輸入密碼就能登陸遠程Linux主機。
ssh-keygen #建立公鑰和密鑰。
ssh-copy-id #把本地主機的公鑰複製到遠程主機的authorized_keys文件上。
ssh-copy-id #也會給遠程主機的用戶主目錄(home)和~/.ssh, 和
~/.ssh/authorized_keys #設置合適的權限。