python - 使用 ssh key 加密和解密密码

标签 python ssh-keys

我的 python 脚本(Python 2.6,在 Debian Linux 上)要求用户输入密码,然后将其保存在用户主目录中。

因为我不想将密码保存为纯文本,所以我想以某种方式对其进行加密。所以我想也许我可以使用用户的(私有(private))ssh key 来加密和解密保存在文件中的密码,这样只有有权访问私有(private) ssh key 的人才能解密保存的密码。

为此使用私有(private) ssh key 是个好主意吗?我如何使用 key 在 python 中加密字符串?

(顺便说一句,我不想​​使用 key 圈之类的东西)

编辑

好吧,我知道将用户 ssh key 用于类似的事情是个坏主意。 相反,我现在只使用 base64 编码,如下所述: How does one encode and decode a string with Python for use in a URL? 当然它不会保存,当有人阅读我的 python 脚本时。但这对我来说已经足够了,不必将密码保存为纯文本。

最佳答案

唯一值得做的就是存储只有用户才能读取的文件。

您关于使用 ssh key 的论点似乎类似于以下内容:

  1. 我需要存储密码,所以我会对其进行加密
  2. 如果我使用用户的 ssh key 进行加密,这将防止有人解密密码,即使他们知道我的脚本源也是如此,因为只有用户才能读取他们的 ssh key 。

如果您将加密的密码存储在一个只有用户可以读取的文件中,您可以获得与使用 ssh key 相同的好处,而根本不必费心读取用户的 ssh key 。

我同意不以明文形式存储密码有一些好处,以防止有人以 root 身份登录只是在做:

cat secret-password

获取密码,但请记住,很容易在您的 Python 脚本中找到以下行:

password = decrypt-password(data)

并添加以下行:

print "The user's password is",password

类似于 os.fchown()可以保护文件,就像首先创建具有正确权限的文件一样。

你可以 base64 encode密码,因此它不是纯文本,但如果我们假设攻击者可以读取和编辑您的脚本,那么唯一可以保护用户的是攻击者无法读取包含加密密码的文件。

如果您真的担心这一点,只需在用户每次运行脚本时提示用户输入密码即可。

关于python - 使用 ssh key 加密和解密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4165042/

相关文章:

python - 如何返回 top-n 概率及其相关类别?

python - Numpy 沿新轴重复数组

python - 在 Raspberry Pi Stretch 上安装 opencv 3.3.0 时 cv2 文件中出现无效转换错误

ubuntu - 使用 pem 文件访问 AWS ssh 集群

java - "The Transport Protocol thread failed"– "The socket is EOF"使用 Java 与 J2SSH 连接

python - 输入空 __slots__ (或空元组)的规范方法是什么?

Python 循环从 CSV 中的数据创建 MYSQL 插入语句

git pull突然停止工作,排查 "Repository not found"

rsa - 如何使用私钥从 Gitlab 下载私有(private)项目

php - 有没有办法在 PHP 中验证 SSH 公钥?