非root用戶sudo_ssh免密鑰
目標:從服務器上ssh登陸后sudo免密鑰執行相應的命令 環境介紹: 192.168.65.128 my1-222 192.168.65.129 my2-223 192.168.65.130 web224# 步驟一: # 每個節點執行(不是必須,但是建議這樣做) cat >>/etc/hosts <<EOF 192.168.65.128 my1-222 192.168.65.129 my2-223 192.168.65.130 web224 EOF# 場景介紹 # 現在有個刪除緩存的操作。需要在192.168.65.128上執行,192.168.65.129和192.168.65.130的相應緩存文件也都一起被刪除掉了 # 準備工作 # 每臺機器上都創建一個賬號 useradd gtuser echo "gtuserpwd" | passwd --stdin gtuser cat >>/etc/sudoers << EOF gtuser ALL=NOPASSWD:/bin/rm -f /tmp/global_cache.log EOF# 建立ssh免密鑰互信 # 因為是從一臺集中去執行,所以是單向免密鑰su - gtuser # 每個節點都執行 ssh-keygen -t rsa # 一路回車 # 將公鑰添加到認證文件中 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 并設置authorized_keys的訪問權限 chmod 600 ~/.ssh/authorized_keys# 只要在一個節點執行即可。這里在 192.168.65.128上執行 ssh 192.168.65.129 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys ssh 192.168.65.130 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys# 分發整合后的文件到其它節點 scp ~/.ssh/authorized_keys 192.168.65.129:~/.ssh/ scp ~/.ssh/authorized_keys 192.168.65.130:~/.ssh/# 測試時,第一次,需要輸入密碼,之后就不需要輸入密碼了。 # 在192.168.65.128上測試 ssh 192.168.65.129 ssh 192.168.65.130# 在192.168.65.129上測試 ssh 192.168.65.129 ssh 192.168.65.130# 在192.168.65.130上測試 ssh 192.168.65.128 ssh 192.168.65.129# 刪除,重新操作 # rm -fr /home/gtuser/.ssh/# 編寫腳本測試 cat >>/root/delete_cache.log <<EOF #ssh -p 22 -t gtuser@192.168.65.128 "sudo /bin/rm -f /tmp/global_cache.log; echo "/tmp/global_cache.log has been deleted"; echo `date`" ssh -p 22 -t gtuser@192.168.65.128 "sudo /bin/rm -f /tmp/global_cache.log" ssh -p 22 -t gtuser@192.168.65.129 "sudo /bin/rm -f /tmp/global_cache.log" ssh -p 22 -t gtuser@192.168.65.130 "sudo /bin/rm -f /tmp/global_cache.log" EOF# 如果是root用戶,類似的操作 scp ~/.ssh/authorized_keys gtuser@192.168.65.129:/home/gtuser/.ssh/ scp ~/.ssh/authorized_keys gtuser@192.168.65.130:/home/gtuser/.ssh/sh /root/delete_cache.log # 執行結果如下: [root@my1-222 ~]# sh /root/delete_cache.log Connection to 192.168.65.128 closed. Connection to 192.168.65.129 closed. Connection to 192.168.65.130 closed. [root@my1-222 ~]#
?