使用Docker部署pwgen簡單密碼生成器
一、 pwgen介紹
1.1 pwgen簡介
pwgen 主要用于生成隨機密碼或短語密碼(passphrase),以滿足不同用戶對安全性與便利性的需求。它不僅支持基礎(chǔ)的密碼生成功能,還提供了一系列高級選項來增強用戶體驗和安全性,如集成有被泄露密碼數(shù)據(jù)庫檢查、離線模式等特性。此外,通過環(huán)境變量配置,可以讓管理員根據(jù)實際情況調(diào)整默認設(shè)置,使得該工具更加靈活多變。
1.2 主要特點
- 友好的用戶界面:提供直觀易用的界面,并允許直接復(fù)制生成的密碼到剪貼板。
 - 安全檢查:利用 haveibeenpwned API 檢查新生成的密碼是否已被泄露,確保用戶不會使用已知不安全的密碼。
 - 離線模式:對于那些運行在隔離網(wǎng)絡(luò)中或者不需要外部API訪問的情況下,可以關(guān)閉在線驗證功能。
 - 環(huán)境變量配置:允許通過設(shè)置環(huán)境變量來自定義密碼/短語密碼的生成規(guī)則。
 - 多語言支持:除了英文外,還支持芬蘭語單詞列表來生成短語密碼。
 - 自定義字典:支持從指定URL加載自定義單詞列表,增加個性化選項。
 - 漸進式Web應(yīng)用(PWA):為用戶提供接近原生應(yīng)用體驗的服務(wù)。
 - 豐富的密碼選項:包括大寫字母、數(shù)字及特殊字符,同時可選擇排除外觀相似的字符(homoglyphs)。
 - 靈活的短語密碼生成:允許用戶定制分隔符類型、決定是否包含數(shù)字或特殊符號等。
 
1.3 使用場景
- 個人用戶:需要為自己常用的網(wǎng)站和服務(wù)創(chuàng)建強密碼時,尤其是當(dāng)這些服務(wù)要求定期更改密碼。
 - 企業(yè)環(huán)境:IT部門可以部署pwgen作為內(nèi)部工具,幫助員工生成符合公司安全策略的密碼。
 - 開發(fā)人員:在開發(fā)過程中快速生成測試賬號所需的密碼。
 - 教育機構(gòu):向?qū)W生展示如何正確地管理自己的賬戶信息,提高他們對網(wǎng)絡(luò)安全的認識。
 - 安全意識培訓(xùn):作為演示工具,在進行網(wǎng)絡(luò)安全相關(guān)的講座或研討會時使用,教導(dǎo)人們關(guān)于密碼安全的重要性。
 
二、本次實踐規(guī)劃
2.1 本地環(huán)境規(guī)劃
本次實踐為個人測試環(huán)境,操作系統(tǒng)版本為|Ubuntu 22.04.1。
| hostname | IP地址 | 操作系統(tǒng)版本 | Docker版本 | 鏡像名稱 | 備注 | 
|---|---|---|---|---|---|
| jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | jocxfin/pwgen:latest | —— | 
2.2 本次實踐介紹
1.本次實踐部署環(huán)境為個人測試環(huán)境,生產(chǎn)環(huán)境請謹慎; 2.在Docker環(huán)境下部署pwgen簡單密碼生成器。
三、本地環(huán)境檢查
3.1 檢查Docker服務(wù)狀態(tài)
檢查Docker服務(wù)是否正常運行,確保Docker正常運行。
root@jeven01:~# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-11-01 00:45:50 CST; 3 weeks 0 days ago
       Docs: https://docs.docker.com
   Main PID: 10450 (dockerd)
      Tasks: 150 (limit: 9387)
     Memory: 3.4G
        CPU: 46min 54.584s
     CGroup: /system.slice/docker.service
             ├─10450 /usr/bin/dockerd
             ├─10459 containerd --config /var/run/docker/containerd/containerd.toml
3.2 檢查Docker版本
檢查Docker版本
root@jeven01:~# docker -v Docker version 27.1.1, build 6312585
3.3 檢查docker compose 版本
檢查Docker compose版本,確保2.0以上版本。
root@jeven01:~# docker compose version Docker Compose version v2.19.1
四、下載pwgen鏡像
執(zhí)行以下命令,拉取以下pwgen鏡像。
root@jeven01:~# docker pull jocxfin/pwgen:latest latest: Pulling from jocxfin/pwgen d25f557d7f31: Already exists d2c04aca259c: Pull complete 17b8b3e271e5: Pull complete e66f59b5a57d: Pull complete c552f0e9d771: Pull complete d7461950037d: Pull complete 093c741c7cef: Pull complete ae27391479cd: Pull complete 4c78c5859469: Pull complete Digest: sha256:1dab8a2a5fc174cae4d4d181505559a98dabaa1ebb56f05ee0416500206c5556 Status: Downloaded newer image for jocxfin/pwgen:latest docker.io/jocxfin/pwgen:latest
五、部署pwgen應(yīng)用
5.1 創(chuàng)建部署目錄
- 創(chuàng)建部署目錄
 
mkdir -p /data/pwgen && cd /data/pwgen
5.2 docker-cli方式部署(可選)
可使用以下docker-cli方式,快速部署pwgen應(yīng)用。
docker run -d -p 5069:5069 -e NO_API_CHECK=true jocxfin/pwgen:latest
5.3 編輯部署文件
本次實踐使用docker compose方式部署,在部署目錄下,創(chuàng)建docker-compose.yaml文件,其中宿主機映射端口等可以自定義配置。
vim docker-compose.yaml
version: '3'
services:
  pwgen:
    image: jocxfin/pwgen:latest
    container_name: pwgen
    restart: always
    ports:
      - 6500:5069- 相關(guān)環(huán)境變量如下所示,可自定義設(shè)置。
 
| 環(huán)境變量 | 作用說明 | 
|---|---|
| NO_API_CHECK=false | 是否禁用對 haveibeenpwned API 的檢查。設(shè)置為 false 表示啟用在線安全檢查。 | 
| PW_LENGTH=12 | 密碼的長度。這里設(shè)置為 12 個字符。 | 
| PW_INCLUDE_UPPERCASE=false | 密碼是否包含大寫字母。設(shè)置為 false 表示不包含。 | 
| PW_INCLUDE_DIGITS=false | 密碼是否包含數(shù)字。設(shè)置為 false 表示不包含。 | 
| PW_INCLUDE_SPECIAL=false | 密碼是否包含特殊字符。設(shè)置為 false 表示不包含。 | 
| PW_EXCLUDE_HOMOGLYPHS=true | 是否排除外觀相似的字符。設(shè)置為 true 表示排除。 | 
| PP_WORD_COUNT=4 | 短語密碼中單詞的數(shù)量。這里設(shè)置為 4 個單詞。 | 
| PP_CAPITALIZE=false | 短語密碼中的單詞首字母是否大寫。設(shè)置為 false 表示不大寫。 | 
| PP_SEPARATOR_TYPE=dash | 短語密碼單詞之間的分隔符類型。這里使用破折號 - 作為分隔符。 | 
| PP_USER_DEFINED_SEPARATOR='' | 用戶自定義的分隔符。這里為空表示沒有額外的用戶定義分隔符。 | 
| PP_MAX_WORD_LENGTH=12 | 短語密碼中單個單詞的最大長度。這里設(shè)置為 12 個字符。 | 
| PP_INCLUDE_NUMBERS=false | 短語密碼是否包含數(shù)字。設(shè)置為 false 表示不包含。 | 
| PP_INCLUDE_SPECIAL_CHARS=false | 短語密碼是否包含特殊字符。設(shè)置為 false 表示不包含。 | 
| PP_LANGUAGE=en | 短語密碼使用的語言。這里設(shè)置為英語。 | 
| PP_HIDE_LANG=false | 是否隱藏語言選擇下拉菜單。設(shè)置為 false 表示顯示。 | 
| PP_LANGUAGE_CUSTOM='' | 自定義語言列表的 URL。這里為空表示使用默認的語言列表。 | 
| MULTI_GEN=true | 是否允許多次同時生成密碼/短語密碼。設(shè)置為 true 表示允許。 | 
| GENERATE_PP=true | 是否生成短語密碼。設(shè)置為 true 表示生成。 | 
| ROBOTS_ALLOW=false | 是否允許搜索引擎爬蟲訪問該服務(wù)。設(shè)置為 false 表示不允許。 | 
| GOOGLE_SITE_VERIFICATION='' | Google 站點驗證代碼。這里為空表示未設(shè)置。 | 
| DISABLE_URL_CHECK=false | 是否禁用 URL 安全性檢查。設(shè)置為 false 表示進行檢查。 | 
| BASE_PATH='' | 服務(wù)的基礎(chǔ)路徑。這里為空可能意味著根路徑 /。 | 
5.4 創(chuàng)建pwgen容器
執(zhí)行以下命令,創(chuàng)建pwgen容器。
root@jeven01:/data/pwgen# docker compose up -d [+] Running 2/2 ? Network pwgen_default Created 0.1s ? Container pwgen Started 0.3s
5.5 查看pwgen容器狀態(tài)
檢查pwgen容器狀態(tài)狀態(tài),確保pwgen容器正常啟動。
root@jeven01:/data/pwgen# docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS pwgen jocxfin/pwgen:latest "gunicorn -w 2 -t 4 …" pwgen About a minute ago Up About a minute 0.0.0.0:6500->5069/tcp, :::6500->5069/tcp
5.6 檢查pwgen容器日志
檢查pwgen容器日志,確保pwgen服務(wù)正常運行。
root@jeven01:/data/pwgen# docker compose logs pwgen | [2024-11-27 10:20:38 +0000] [1] [INFO] Starting gunicorn 23.0.0 pwgen | [2024-11-27 10:20:38 +0000] [1] [INFO] Listening at: http://0.0.0.0:5069 (1) pwgen | [2024-11-27 10:20:38 +0000] [1] [INFO] Using worker: uvicorn.workers.UvicornWorker pwgen | [2024-11-27 10:20:38 +0000] [7] [INFO] Booting worker with pid: 7 pwgen | [2024-11-27 10:20:38 +0000] [8] [INFO] Booting worker with pid: 8 pwgen | [2024-11-27 10:20:39 +0000] [7] [INFO] Started server process [7] pwgen | [2024-11-27 10:20:39 +0000] [7] [INFO] Waiting for application startup. pwgen | [2024-11-27 10:20:39 +0000] [7] [INFO] ASGI 'lifespan' protocol appears unsupported. pwgen | [2024-11-27 10:20:39 +0000] [7] [INFO] Application startup complete. pwgen | [2024-11-27 10:20:39 +0000] [8] [INFO] Started server process [8] pwgen | [2024-11-27 10:20:39 +0000] [8] [INFO] Waiting for application startup. pwgen | [2024-11-27 10:20:39 +0000] [8] [INFO] ASGI 'lifespan' protocol appears unsupported. pwgen | [2024-11-27 10:20:39 +0000] [8] [INFO] Application startup complete.

六、訪問pwgen服務(wù)
6.1 訪問pwgen首頁
訪問地址:http://192.168.3.88:6500,將IP替換為自己服務(wù)器IP地址。如果無法訪問到以下頁面,則檢查宿主機的防火墻是否關(guān)閉或者放行相關(guān)端口,云服務(wù)器則還需要設(shè)置安全組規(guī)則。

6.2 生成默認密碼
生成的短語密碼遵循了以下規(guī)則:每個單詞首字母大寫、包含數(shù)字、包含特殊字符,使用破折號 - 作為分隔符,最大單詞長度為7個字符,并且由4個單詞組成?;谶@些設(shè)定,生成的具體短語密碼示例為 Obeyed7#-Wins2;-Hamauls7:-Aptest5:。這個密碼結(jié)合了易于記憶的單詞與額外的安全元素(如數(shù)字和特殊字符),以增強其安全性。此外,該工具還提供了復(fù)制功能,方便用戶直接將生成的密碼粘貼到需要的地方。所有生成的密碼和短語密碼都會被交叉引用檢查,確保它們未曾在已知的數(shù)據(jù)泄露事件中出現(xiàn)過,從而進一步保障用戶賬戶的安全性。
- 生成安全密碼和短語密碼的要求
 
| 參數(shù) | 描述 | 
|---|---|
| 包含大寫字母 | 密碼中包含大寫字母。 | 
| 包含數(shù)字 | 密碼中包含數(shù)字。 | 
| 包含特殊字符 | 密碼中包含特殊字符。 | 
| 排除外觀相似的字符 | 密碼中不包含外觀相似的字符(例如:0 和 O, 1 和 l)。 | 
| 長度 | 密碼長度為 12 個字符。 | 
| 生成短語密碼 | 同時生成一個短語密碼。 | 

七、總結(jié)
在部署實踐過程中,使用Docker容器化pwgen密碼生成器展現(xiàn)了其便捷性和靈活性。通過簡單的Docker命令即可快速啟動服務(wù),并利用環(huán)境變量輕松調(diào)整密碼生成規(guī)則,滿足不同場景下的安全需求。實際體驗中,pwgen不僅提供了強大的密碼和短語密碼生成功能,還確保了生成的密碼經(jīng)過泄露數(shù)據(jù)庫檢查,增強了安全性。此外,友好的用戶界面設(shè)計和易于使用的復(fù)制功能極大地提升了用戶體驗,使得無論是個人還是企業(yè)用戶都能方便地管理自己的密碼安全。
到此這篇關(guān)于使用Docker部署pwgen簡單密碼生成器的文章就介紹到這了,更多相關(guān)Docker部署pwgen密碼生成器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
 在 Ubuntu 下通過 Docker 部署 Mastodon&nbs
在Ubuntu系統(tǒng)上通過Docker部署Mastodon服務(wù)器的步驟,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2025-03-03
 通過提前bake Docker鏡像加快基礎(chǔ)設(shè)施的啟動速度
這篇文章主要介紹了通過提前bake Docker鏡像加快基礎(chǔ)設(shè)施的啟動速度的相關(guān)資料,需要的朋友可以參考下2017-01-01
 docker在已有的tomcat鏡像上打新的鏡像的Dockerfile編寫說明介紹
這篇文章主要介紹了docker在已有的tomcat鏡像上打新的鏡像的Dockerfile編寫說明介紹,需要的朋友可以參考下2016-10-10

