加密/解密密码并通过 ksh 脚本使用

Posted

技术标签:

【中文标题】加密/解密密码并通过 ksh 脚本使用【英文标题】:Encrypt/decrypt password and use it by ksh script 【发布时间】:2020-08-11 09:45:06 【问题描述】:

我在 RedHat linux 服务器上使用 applicative 用户(无 root)工作。 我有一个 ksh 脚本,可以通过这个命令在不同的 DB 上建立一些 sqlplus 连接:

sqlplus -s myuser/password@DBNAME

此连接需要密码,每个密码都不同。

我想加密这些密码并将它们存储在一个文件中。 然后,每次我运行我的脚本时,它都必须读取一个特定的加密密码,解密它,最后将它传递给sqlplus 命令。

关于使用特定密码,我想我可以在行首插入一个标签,但我的问题是如何使用 openSSL 加密此密码(我无法在机器上安装任何工具)以及它是否是一种安全方法以避免发送纯文本密码。提前致谢。

【问题讨论】:

这有点像第 22 条规则。如果您希望脚本验证用户提供的密码,您可以使用一些散列,例如使用 htpasswd。但是,如果您希望脚本“知道”密码以在无人看管的情况下运行,那就另当别论了。您可以对密码进行编码,例如 Base64,并即时解码。授予密码不会在文件中以明文形式显示,但任何有权访问的人都可以解码。与加密相同,因为脚本需要知道要解密的密钥。不妨使用模式为 600 的隐藏文件并在您的脚本中获取它(这就是我实际上所做的)。 包含加密密码的文件将被放置到任何人都无法访问(特定用户除外)的“受信任”目录中。为此,我想到了这个方法。 然后使用一个隐藏文件(模式 600)和一个以 UID 为索引的关联数组并获取该文件。您将节省解密开销并具有基本相同的安全性。 好的,我会尝试这样做。我不知道实际上我必须做什么,但我会去做。 :) 谢谢。 我知道关联数组和隐藏文件,但不太了解 > "...以 UID 为索引并获取该文件的来源。" 【参考方案1】:

类似:

凭证文件

#!/bin/ksh
#######################################################
#
# Source for UID/Password. MUST be with access 600
#
# .credential.sh
#
# Usage : . .credential.sh
#
######################################################

#Declaring associative array

typeset -A Password

# Setting the values

Password[USER1]="Passwd1"
Password[USER2]="Passwd2"

在你的脚本中:

#!/bin/ksh

#sourcing the credential files
. /foo/bar/.credential.sh

#............... Some code
myuser=USER1 # Or whatever means to set the user variable
#............... Some code

sqlplus -s $myuser/$Password[$myuser]@DBNAME

#............... Some code

【讨论】:

好的,完美。非常感谢。关于权限,将它们设置为 400 会更好吗?以避免任何可能的修改。您是否同意或有特定理由设置为 600 ?谢谢。 不会有太大变化。使用 400,作为所有者,如果您尝试编辑或删除文件,您将收到文件被写保护的警告,但您可以选择覆盖该保护。此外,所有者可以随时更改其文件的模式。 好的。谢谢你。最好的后卫。

以上是关于加密/解密密码并通过 ksh 脚本使用的主要内容,如果未能解决你的问题,请参考以下文章

LoadRunner脚本优化-加密与解密

AES GCM 使用 web 微妙加密进行加密并使用颤振加密进行解密

使用opensll加解密压缩文件

ssh和sshd服务

使用Bcrypt对密码进行加密与解密验证

用C语言编程恺撒密码加密解密程序