【问题标题】:Using "lein ring server" over SSH with Datomic and a GPG key通过带有 Datomic 和 GPG 密钥的 SSH 使用“lein ring server”
【发布时间】:2015-07-19 01:26:36
【问题描述】:

Leiningen 不会要求我提供密码来解密我的 gpg 密钥(其中包含我的用户名和 Datomic 密码)。

gpg --quiet --batch --decrypt ~/.lein/credentials.clj.gpg

在类似终端/ascii 的“弹出窗口”中提示输入密码(随后给我解密的密钥),然后尝试

lein deps

lein ring server-headless 4000 

简单地说

$ lein ring server-headless 4000
Could not decrypt credentials from /home/vas/.lein/credentials.clj.gpg
gpg: cancelled by user
gpg: decryption failed: secret key not available

See `lein help gpg` for how to install gpg.

即使我从未取消或输入密码。相同的操作在我的本地机器上工作没问题,虽然它给了我一个密码的图形弹出窗口。有没有办法强制输入基于终端的密码?

我正在通过 SSH 与另一个 ubuntu 机器交谈,我想知道如何让它提示输入密码或者我可以让它工作的另一种方式。

有人有什么想法吗?

编辑:https://github.com/technomancy/leiningen/issues/615

看起来解决方案是使用钥匙串。

https://github.com/funtoo/keychain

【问题讨论】:

  • 是的,使用钥匙串可以解决这个问题。遗憾的是 lein 不能很好地与使用 gpg 的 tty 配合使用。此外,您可以通过 ssh 转发本地钥匙串(绑定到您的本地登录名)。
  • @noisesmith 您能否说明后者(通过 SSH 转发本地钥匙串)是如何可能的?我无法让钥匙串存储半持久会话。如果我理解正确,我可以执行 gpg --batch --etc... 命令并让密码短语 tty 弹出窗口询问我是否通过,然后我可以执行 lein 命令并且钥匙串应该或多或少为该操作缓存?那是我的理论,但它仍然不起作用。感谢您的回复
  • 我回答了关于 gpg 的具体问题,但是考虑一下大局,最好不要在生产中使用 lein(毕竟它是一个构建和开发工具),而是使用环境变量而不是而不是服务器上的凭据文件。使用 uberjar 运行应用程序。除其他原因外,这允许更快的启动、更高的一致性以及自动化部署的能力。
  • noisesmith 你是个天才。我希望一个 repl 远程与我的数据库交谈,但该应用程序可以纯粹从 uberjar 运行......将考虑
  • 您可以从 uberjar 运行 repl(通过 clojure.main 类或通过 nrepl 库)。

标签: clojure gnupg datomic


【解决方案1】:

这里有几个选项,但最好的一个是use the Unix Domain Socket forwarding openssh 功能,然后在本地使用合适的 gpg 代理。

【讨论】:

    猜你喜欢
    • 2017-09-03
    • 2018-12-26
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    相关资源
    最近更新 更多