pwgen 是一款专为生成随机密码或短语密码(passphrase)而设计的工具,能够满足不同用户对于安全性与便利性的多样化需求。它不仅提供基础的密码生成功能,还集成了一系列高级选项,以增强用户体验与安全性,例如支持被泄露密码数据库检查、离线模式运行等特性。此外,用户可以通过环境变量灵活配置默认设置,使工具更具适应性和可定制性。
本次实践环境为个人测试环境,操作系统版本为 Ubuntu 22.04.1。
主机名 | IP 地址 | 操作系统版本 | Docker 版本 | 镜像名称 | 备注 |
---|---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | jocxfin/pwgen:latest | —— |
注意事项:
- 本次实践部署环境为个人测试环境,生产环境请谨慎操作;
- 实践内容为在 Docker 环境下部署 pwgen 简单密码生成器。
确认 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
查看当前 Docker 版本信息。
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585
确认 Docker Compose 版本是否在 2.0 及以上。
root@jeven01:~# docker compose version
Docker Compose version v2.19.1
执行以下命令,拉取最新的 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
创建用于部署的目录并进入该目录:
mkdir -p /data/pwgen && cd /data/pwgen
可使用以下 Docker CLI 命令快速部署 pwgen 应用:
docker run -d -p 5069:5069 -e NO_API_CHECK=true jocxfin/pwgen:latest
本次实践采用 Docker Compose 方式进行部署。请在部署目录下创建
docker-compose.yaml
文件,并根据需要自定义宿主机端口等配置。
使用以下命令创建并编辑文件:
vim docker-compose.yaml
文件内容如下:
version: '3'
services:
pwgen:
image: jocxfin/pwgen:latest
container_name: pwgen
restart: always
ports:
- 6500:5069
以下为可配置的环境变量及其作用:
环境变量 | 说明 |
---|---|
NO_API_CHECK=false |
是否禁用 haveibeenpwned API 检查,false 表示启用安全检查。 |
PW_LENGTH=12 |
设置密码长度为 12 个字符。 |
PW_INCLUDE_UPPERCASE=false |
密码是否包含大写字母,false 表示不包含。 |
PW_INCLUDE_DIGITS=false |
密码是否包含数字,false 表示不包含。 |
PW_INCLUDE_SPECIAL=false |
密码是否包含特殊字符,false 表示不包含。 |
PW_EXCLUDE_HOMOGLYPHS=true |
是否排除外观相似字符,true 表示排除。 |
PP_WORD_COUNT=4 |
短语密码中单词数量,设为 4 个单词。 |
PP_CAPITALIZE=false |
短语密码单词首字母是否大写,false 表示不大写。 |
PP_SEPARATOR_TYPE=dash |
短语密码单词分隔符类型,例如使用破折号“-”。 |
PP_USER_DEFINED_SEPARATOR='' |
用户自定义分隔符,为空表示使用默认分隔符。 |
PP_MAX_WORD_LENGTH=12 |
短语密码中单个单词的最大长度,设为 12 个字符。 |
PP_INCLUDE_NUMBERS=false |
短语密码是否包含数字,false 表示不包含。 |
PP_INCLUDE_SPECIAL_CHARS=false |
短语密码是否包含特殊字符,false 表示不包含。 |
PP_LANGUAGE=en |
短语密码使用的语言,默认为英语。 |
PP_HIDE_LANG=false |
是否隐藏语言选择下拉菜单,false 表示显示。 |
PP_LANGUAGE_CUSTOM='' |
自定义语言列表的 URL,为空表示使用默认列表。 |
MULTI_GEN=true |
是否允许多次同时生成密码或短语密码,true 表示允许。 |
GENERATE_PP=true |
是否生成短语密码,true 表示生成。 |
ROBOTS_ALLOW=false |
是否允许搜索引擎爬虫访问,false 表示不允许。 |
GOOGLE_SITE_VERIFICATION='' |
Google 站点验证代码,为空表示未设置。 |
DISABLE_URL_CHECK=false |
是否禁用 URL 安全性检查,false 表示进行检查。 |
`BASE_PATH=' |