我的python脚本(Python 2.6,在Debian Linux上)要求用户输入密码,然后将其保存在用户主目录中.
因为我不想将密码作为纯文本保护,我想以某种方式加密它.所以我想也许我可以使用用户的(私有)ssh-key来加密和解密保存在文件中的密码,这样只有一个访问私有ssh密钥的人才能解密保存的密码.
为此使用私有ssh密钥是个好主意吗?如何在python中使用密钥加密字符串?
(顺便说一句,我不想使用密钥环和类似的东西)
编辑
好吧,我理解使用用户ssh密钥这样的东西是个坏主意.
相反,我现在只使用base64编码,如下所述:
How does one encode and decode a string with Python for use in a URL?
当有人读我的python脚本时,当然不能保存.但它对我来说足够了,不必将密码保存为纯文本.
解决方法:
绝对值得做的唯一事情是存储只有用户可以阅读的文件.
您使用ssh键的参数似乎如下所示:
>我需要存储密码,所以我会对其进行加密
>如果我使用用户的ssh密钥进行加密,这将阻止有人解密密码,即使他们拥有我的脚本源,因为只有用户可以读取他们的ssh密钥.
如果将加密密码存储在文件中,只有用户可以读取,您将获得与使用ssh密钥相同的好处,而无需费心阅读用户的ssh密钥.
我同意不以纯文本格式存储密码有一些好处,以防止有人以root用户身份登录:
cat secret-password
获取密码但记住在Python脚本中找到行说法很容易:
password = decrypt-password(data)
并添加以下行:
print "The user's password is",password
像os.fchown()这样的东西可以保护文件,就像创建具有正确权限的文件一样.
您可以使用base64 encode密码,因此它不是纯文本,但如果我们假设攻击者可以读取和编辑您的脚本,则唯一可以保护用户的是攻击者无法读取包含加密密码的文件.
如果您真的担心这一点,只需在每次运行脚本时提示用户输入密码.
标签:python,ssh-keys
来源: https://codeday.me/bug/20190526/1157649.html