最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Ansible安全批量修改Linux服務(wù)器密碼的詳細(xì)方案

 更新時(shí)間:2026年04月07日 16:30:08   作者:文心  
Ansible通過user模塊和加密工具可實(shí)現(xiàn)安全、高效的密碼批量更新,核心步驟包括密碼加密處理、Playbook編寫和安全控制,本文介紹Ansible安全批量修改Linux服務(wù)器密碼的詳細(xì)方案,感興趣的朋友跟隨小編一起看看吧

在Linux服務(wù)器管理中,批量修改用戶密碼是重要的安全運(yùn)維操作。Ansible通過user模塊和加密工具可實(shí)現(xiàn)安全、高效的密碼批量更新,核心步驟包括密碼加密處理、Playbook編寫和安全控制。

密碼加密處理

生成SHA-512加密密碼

在控制節(jié)點(diǎn)執(zhí)行以下命令生成加密密碼(需安裝whois工具):

sudo apt-get install whois # Debian/Ubuntu mkpasswd --method=SHA-512 --stdin

輸入明文密碼后,輸出類似$6$salt$encrypted的字符串,用于Playbook中的密碼字段。

使用Ansible Vault加密敏感數(shù)據(jù)

# 創(chuàng)建加密變量文件 ansible-vault create secrets.yml

文件內(nèi)容示例:

vault_target_user: admin vault_encrypted_pass: "$6$somesalt$encryptedhash"

執(zhí)行Playbook時(shí)通過以下方式解密:

ansible-playbook change_password.yml --ask-vault-pass  # 交互式輸入密碼
# 或
ansible-playbook change_password.yml --vault-password-file ~/.vault_pass  # 使用密碼文件

Playbook實(shí)現(xiàn)方案

方案1:批量修改多用戶密碼(靜態(tài)列表)

---
- name: 安全修改用戶密碼
  hosts: linux_servers
  become: true
  vars_files:
    - secrets.yml  # 加載加密變量
  tasks:
    - name: 驗(yàn)證目標(biāo)用戶存在
      ansible.builtin.command: "getent passwd {{ vault_target_user }}"
      register: user_check
      ignore_errors: true
      changed_when: false
    - name: 更新用戶密碼
      ansible.builtin.user:
        name: "{{ vault_target_user }}"
        password: "{{ vault_encrypted_pass }}"
        update_password: always
      when: user_check.rc == 0

方案2:動(dòng)態(tài)傳遞參數(shù)(單用戶修改)

---
- name: 修改單個(gè)用戶密碼
  hosts: all
  become: true
  tasks:
    - name: 動(dòng)態(tài)設(shè)置密碼
      user:
        name: "{{ target_user | default('root') }}"
        password: "{{ new_pass | password_hash('sha512') }}"
        update_password: always

執(zhí)行命令:

ansible-playbook single_user_change.yml -e "target_user=ubuntu new_pass=Secure@123"

關(guān)鍵安全控制

文件系統(tǒng)權(quán)限

chmod 600 secrets.yml             # 僅所有者可讀
chown ansible-runner secrets.yml  # 限制為特定用戶

執(zhí)行權(quán)限控制(sudo)

/etc/sudoers中配置:

ansible-runner ALL=(root) NOPASSWD: /usr/bin/ansible-playbook change_password.yml

生產(chǎn)環(huán)境最佳實(shí)踐

密碼輪換策略

每次執(zhí)行生成新salt值:

import secrets salt = secrets.token_hex(8) # 生成16字符隨機(jī)salt

定期更新vault密碼:

ansible-vault rekey secrets.yml

審計(jì)與監(jiān)控

啟用Ansible日志:

[defaults]
log_path = /var/log/ansible.log

使用--check模式預(yù)演變更:

ansible-playbook change_password.yml --check --diff

灰度發(fā)布

  • 先在小規(guī)模主機(jī)組測試:
ansible-playbook change_password.yml --limit staging_servers

補(bǔ)充:以下為AI生成在Linux批量修改服務(wù)器用戶密碼的方法,供大家參考!

Linux批量修改服務(wù)器用戶密碼的方法

我來介紹幾種在Linux批量修改服務(wù)器用戶密碼的方法:

方法1:使用 chpasswd 命令(推薦)

準(zhǔn)備密碼文件

創(chuàng)建 passwords.txt 文件,格式為 用戶名:密碼

user1:NewPass123!
user2:NewPass456!
user3:NewPass789!

批量修改

# 作為root用戶執(zhí)行
cat passwords.txt | chpasswd
# 或者加密方式(更安全)
cat passwords.txt | chpasswd -c SHA512

方法2:使用 passwd 和循環(huán)

從文件讀取用戶和新密碼

#!/bin/bash
while IFS=: read -r user pass; do
    echo "$user:$pass" | chpasswd
    echo "用戶 $user 密碼已修改"
done < passwords.txt

方法3:批量生成隨機(jī)密碼

#!/bin/bash
# 為指定用戶批量生成隨機(jī)密碼
USERS="user1 user2 user3"
for user in $USERS; do
    # 生成12位隨機(jī)密碼
    newpass=$(openssl rand -base64 12)
    echo "$user:$newpass" | chpasswd
    echo "用戶: $user, 新密碼: $newpass" >> newpasswords.txt
done

方法4:使用 expect 實(shí)現(xiàn)交互式修改

#!/usr/bin/expect -f
set f [open "userlist.txt" r]
while {[gets $f line] != -1} {
    set user [lindex $line 0]
    set pass [lindex $line 1]
    spawn passwd $user
    expect "新的密碼:"
    send "$pass\r"
    expect "重新輸入新的密碼:"
    send "$pass\r"
    expect eof
}
close $f

方法5:通過SSH批量修改多臺(tái)服務(wù)器

#!/bin/bash
# 需要在多臺(tái)服務(wù)器上批量修改
SERVER_LIST="server1 server2 server3"
USERNAME="root"
NEW_PASS="CommonNewPass123!"
for server in $SERVER_LIST; do
    ssh $USERNAME@$server "echo '$USERNAME:$NEW_PASS' | chpasswd"
    if [ $? -eq 0 ]; then
        echo "$server: 密碼修改成功"
    else
        echo "$server: 密碼修改失敗"
    fi
done

安全注意事項(xiàng)

1. 密碼文件安全處理

# 創(chuàng)建密碼文件后設(shè)置權(quán)限
chmod 600 passwords.txt
chown root:root passwords.txt
# 使用后立即刪除或加密存儲(chǔ)
shred -u passwords.txt

2. 使用加密傳輸

# 通過SSL加密傳輸密碼文件
scp encrypted_passwords.txt user@server:/tmp/

3. 驗(yàn)證密碼復(fù)雜度

#!/bin/bash
# 密碼復(fù)雜度驗(yàn)證腳本
check_password() {
    local pass=$1
    if [[ ${#pass} -lt 8 ]]; then
        echo "密碼長度至少8位"
        return 1
    fi
    if ! [[ "$pass" =~ [A-Z] ]]; then
        echo "密碼需要包含大寫字母"
        return 1
    fi
    if ! [[ "$pass" =~ [a-z] ]]; then
        echo "密碼需要包含小寫字母"
        return 1
    fi
    if ! [[ "$pass" =~ [0-9] ]]; then
        echo "密碼需要包含數(shù)字"
        return 1
    fi
    return 0
}

完整示例腳本

#!/bin/bash
# batch_change_passwords.sh - 批量修改用戶密碼腳本
# 配置
USER_LIST_FILE="users.txt"      # 格式:用戶名
PASSWORD_FILE="passwords.txt"   # 格式:用戶名:密碼
LOG_FILE="password_change.log"
# 檢查root權(quán)限
if [ "$EUID" -ne 0 ]; then 
    echo "請以root用戶運(yùn)行此腳本"
    exit 1
fi
# 生成隨機(jī)密碼的函數(shù)
generate_random_pass() {
    openssl rand -base64 12 | tr -d "=/+" | cut -c1-12
}
# 方法1:從文件讀取已有密碼
batch_change_from_file() {
    echo "開始批量修改密碼..." | tee -a $LOG_FILE
    while IFS=: read -r user pass; do
        if id "$user" &>/dev/null; then
            echo "$user:$pass" | chpasswd
            if [ $? -eq 0 ]; then
                echo "$(date): 用戶 $user 密碼修改成功" >> $LOG_FILE
            else
                echo "$(date): 用戶 $user 密碼修改失敗" >> $LOG_FILE
            fi
        else
            echo "$(date): 用戶 $user 不存在" >> $LOG_FILE
        fi
    done < $PASSWORD_FILE
}
# 方法2:為用戶生成隨機(jī)密碼
batch_generate_random() {
    echo "生成隨機(jī)密碼..." | tee -a $LOG_FILE
    > new_passwords.txt
    while read user; do
        if id "$user" &>/dev/null; then
            newpass=$(generate_random_pass)
            echo "$user:$newpass" | chpasswd
            echo "$user: $newpass" >> new_passwords.txt
            echo "$(date): 用戶 $user 密碼已生成" >> $LOG_FILE
        fi
    done < $USER_LIST_FILE
    echo "新密碼已保存到 new_passwords.txt"
    chmod 600 new_passwords.txt
}
# 主菜單
echo "請選擇操作:"
echo "1. 使用預(yù)定義密碼文件修改"
echo "2. 為用戶生成隨機(jī)密碼"
read -p "選擇 (1/2): " choice
case $choice in
    1)
        if [ -f "$PASSWORD_FILE" ]; then
            batch_change_from_file
        else
            echo "密碼文件 $PASSWORD_FILE 不存在"
            exit 1
        fi
        ;;
    2)
        if [ -f "$USER_LIST_FILE" ]; then
            batch_generate_random
        else
            echo "用戶列表文件 $USER_LIST_FILE 不存在"
            exit 1
        fi
        ;;
    *)
        echo "無效選擇"
        exit 1
        ;;
esac
echo "操作完成!日志保存在 $LOG_FILE"

這個(gè)腳本提供了靈活的批量密碼修改方案,可以根據(jù)實(shí)際需求選擇合適的實(shí)現(xiàn)方式。

到此這篇關(guān)于Ansible安全批量修改Linux服務(wù)器密碼的完整方案的文章就介紹到這了,更多相關(guān)Linux批量修改服務(wù)器用戶密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Linux使用ss命令結(jié)合zabbix對socket做監(jiān)控

    詳解Linux使用ss命令結(jié)合zabbix對socket做監(jiān)控

    zabbix是一個(gè)基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)的開源解決方案。這篇文章主要分為三塊進(jìn)行說明:介紹ss命令;對機(jī)器總體的socket進(jìn)行監(jiān)控;某些機(jī)器連接該機(jī)器的數(shù)量進(jìn)行監(jiān)控
    2021-06-06
  • Centos7下Samba服務(wù)器配置(實(shí)戰(zhàn))

    Centos7下Samba服務(wù)器配置(實(shí)戰(zhàn))

    這篇文章主要介紹了Centos7下Samba服務(wù)器配置(實(shí)戰(zhàn)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Linux系統(tǒng)修改環(huán)境變量的常用方法

    Linux系統(tǒng)修改環(huán)境變量的常用方法

    這篇文章主要給大家介紹了Linux系統(tǒng)修改環(huán)境變量的常用方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Apache環(huán)境下配置多個(gè)ssl證書搭建多個(gè)站點(diǎn)的方法

    Apache環(huán)境下配置多個(gè)ssl證書搭建多個(gè)站點(diǎn)的方法

    這篇文章主要介紹了Apache環(huán)境下配置多個(gè)ssl證書搭建多個(gè)站點(diǎn)的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • Apache POI案例代碼詳解

    Apache POI案例代碼詳解

    Apache POI 是一個(gè)處理Miscrosoft Office各種文件格式的開源項(xiàng)目,可以使用POI在Java程序中對Miscrosoft Office各種文件進(jìn)行讀寫操作,本文介紹Apache POI案例代碼,感興趣的朋友一起看看吧
    2024-04-04
  • linux安裝軟件時(shí)提示軟件包不存在的解決方法

    linux安裝軟件時(shí)提示軟件包不存在的解決方法

    今天小編就為大家分享一篇linux安裝軟件時(shí)提示軟件包不存在的解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • centOS7 橋接模式設(shè)置靜態(tài)Ip的方法步驟

    centOS7 橋接模式設(shè)置靜態(tài)Ip的方法步驟

    這篇文章主要給大家介紹了關(guān)于centOS7 橋接模式設(shè)置靜態(tài)Ip的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用centOS7具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • apache虛擬主機(jī)的配置指南

    apache虛擬主機(jī)的配置指南

    本文介紹了apache虛擬主機(jī)的配置的方法,要配置apache的虛擬主機(jī),我們需要分以下幾步進(jìn)行:檢查apache虛擬主機(jī)模塊,開啟apache虛擬主機(jī)功能,httpd-vhosts.conf文件詳解,根據(jù)IP配置虛擬主機(jī),根據(jù)端口配置虛擬主機(jī),根據(jù)域名配置虛擬主機(jī),有需要的小伙伴參考下
    2015-01-01
  • Linux內(nèi)核設(shè)備驅(qū)動(dòng)之proc文件系統(tǒng)筆記整理

    Linux內(nèi)核設(shè)備驅(qū)動(dòng)之proc文件系統(tǒng)筆記整理

    今天小編就為大家分享一篇關(guān)于Linux內(nèi)核設(shè)備驅(qū)動(dòng)之proc文件系統(tǒng)筆記整理,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Linux實(shí)現(xiàn)雙網(wǎng)卡綁定的代碼詳解

    Linux實(shí)現(xiàn)雙網(wǎng)卡綁定的代碼詳解

    linux 主機(jī)安裝雙網(wǎng)卡,共享一個(gè)IP地址,對外提供訪問,實(shí)際同樣連接兩條物理線路到交換機(jī)實(shí)現(xiàn)平時(shí)雙網(wǎng)卡同時(shí)工作,分流網(wǎng)絡(luò)壓力,同時(shí)提供冗余備份,監(jiān)控,防止物理線路的單點(diǎn)故障,本文介紹了Linux實(shí)現(xiàn)雙網(wǎng)卡綁定的代碼示例,需要的朋友可以參考下
    2024-07-07

最新評(píng)論

托里县| 连平县| 阜南县| 旬邑县| 六枝特区| 车致| 从化市| 浑源县| 伊春市| 简阳市| 贡山| 达日县| 巫山县| 剑河县| 榆社县| 淮北市| 乐山市| 宁夏| 介休市| 安仁县| 稻城县| 得荣县| 罗平县| 高雄县| 三原县| 太原市| 北宁市| 阿拉善盟| 桐城市| 政和县| 巫山县| 池州市| 赤峰市| 丁青县| 景泰县| 兰州市| 西安市| 砚山县| 衢州市| 扬中市| 武乡县|