在服务器部署中使用 shell 生成随机密码

在服务器部署中使用 shell 生成随机密码

当我运行自动部署脚本时,我试图动态生成各种配置文件和设置的随机安全密码。我希望生成这些密码,向用户显示,用作部署的一部分,然后丢弃它们。

这就是我要做的事情:

# FUNCTION TO GENERATE A RANDOM STRING
function randpass() {
  [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
    cat /dev/urandom | tr -cd "$CHAR" | head -c ${1:-32}
    echo
}

$NOW = $(date +"%m-%d-%Y") || echo ="Time = $now"
$APPKEY = randpass(20) || echo "Secret key = $APPKEY"
read -p "Copied down?" -n1 -s
  1. 这是一个糟糕的做法吗?
  2. 这安全吗?
  3. 部署完成后,密码会存储为变量吗?

我是 shell 和 linux 管理的新手,因此如果能得到任何帮助我都会很感激。

詹姆士

答案1

1)是的,使用类似 pwgen 的工具来定制密码(比如包含哪些字符集、长度、生成的密码总数等)。

2)可能有所不同

3)因为您不导出它们,所以不行。

答案2

我正在使用这种方法:

PASSWORD=$(strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 12 | tr -d '\n'; echo)

从我的角度来看,生成的密码是相当安全的,但我并不是加密专家。

变量只存储在脚本的上下文中,只要你没有使用“source”来执行它。如果你这样做了,你可以使用“unset PASSWORD”来删除变量的内容。

*pwgen 当然没问题,但是您可能会面临无法安装/使用它的情况,我经常遇到这种情况。

相关内容