如何禁用 python 密钥环的命令行密码提示 - headless debian linux

问题描述 投票:0回答:2

问题:

我想在无头 Linux 环境中使用 python 的

keyring
库,特别是 Debian 9 GCP 计算实例。我有一个 cron 作业,经常醒来运行 python 脚本(...它利用密钥环检索各种资源的密码)。

问题在于,Python 脚本会在允许 Python 脚本继续运行之前提示用户输入

keyring
密码。这不起作用,因为脚本作为后台 cron 进程执行。有趣的是,在 Windows 环境中运行相同的脚本不是问题,大概是因为进程(用户)已经经过身份验证。

研究:

我只找到了一篇 StackOverflow 帖子(这里)和官方在线文档(这里 - “在无头 Linux 系统上使用密钥环”),其中有一小节介绍如何在无头 Linux 环境中运行密钥环。

StackOverflow 帖子介绍了如何使用

pgcli
执行此操作,但没有介绍任何任意命令行工具(例如我的 python 脚本),因此我认为它没有帮助。

同样,我也无法成功重现文档中的步骤(感觉好像缺少步骤?)以实现效果。明确地说,在执行

dbus-run-session -- sh
后,我运行
gnome-keyring-daemon --unlock
,但 dbus-run-session 似乎挂起并且似乎没有执行任何操作)。

问题:

1)鉴于我的上述场景,有没有人可以提供有关如何在无头 Debian Linux 环境中运行

keyring
的明确说明?明确 - 没有密码提示。如果可能的话,我真的很感激非常明确的分步说明。

2)如果没有,我将使用

keyring
检索各种资源的密码(例如 postgres、远程 API 密钥等)。我希望将它们固定在钥匙圈中,但如果不可能,推荐的替代方案是什么?我读了一些关于在环境变量中存储此类数据的 StackOverflow 帖子,但不建议这样做。我还觉得创建一个配置文件然后对其进行加密似乎很繁重。


如有任何帮助,我们将不胜感激。谢谢你-

security python-keyring
2个回答
2
投票

我刚刚按照您指出的说明进行了尝试,并且成功了。

gnome-keyring-daemon --unlock
没有挂起,它正在从标准输入读取您的密码,即您需要使用 Enter 并按 Ctrl-D 来完成密码。因此,您输入的换行符似乎不会成为密码的一部分。

似乎第一次运行它时,您正在设置密码。在后续运行中,如果密码错误,gnome-keyring-daemon 不会提供任何反馈,但显然您的程序稍后将无法连接。


0
投票

在 keyrings.alt 包中使用纯文本后端


import keyring
import keyrings.alt.file
keyring.set_keyring(keyrings.alt.file.PlaintextKeyring())

© www.soinside.com 2019 - 2024. All rights reserved.