java 应用程序依赖于私钥,它们可以存储在GitHub中吗[关闭]

lqfhib0f  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(133)

已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

2天前关闭。
Improve this question
我们的Java应用程序是一个作业,它使用私钥将SFTP的文件发送到远程位置。对于非PROD测试,有一个较低环境私钥,PROD有自己的较高环境私钥。
如果我们没有将任何私钥与项目一起签入GitHub,那么新开发人员将立即无法构建/运行应用程序。作业及其单元测试都需要私钥存在于用户计算机上的某个位置。唯一的解决方案是为新开发人员提供README.MD警告:“获取一个私钥,把它放在你的机器上的某个地方,并在 application.yaml 中设置变量SFTP_PRIVATE_KEY到那个位置--**在你做任何事情之前!“
如果我们将Non-PROD私钥签入GitHub,并且签入的 application.yaml 指向该密钥,那么新开发人员将从头开始工作。但我们听说它永远不允许将任何密钥签入GitHub。
是否至少允许将非PROD私钥签入GitHub,以简化初始设置,或者这从来都不是一个好主意?
使用私钥的SFTP应用程序代码,例如:

byteArrayInputStreamJSON = new ByteArrayInputStream(bytesJSON);         
jSch.addIdentity(filePrivateKey.getAbsolutePath(), sftpPrivateKeyPassphrase);
channelSftp.put(byteArrayInputStreamJSON, filename);
li9yvcax

li9yvcax1#

我想你真的误解了私钥是什么:私有的。它不应该离开源主机。然而,你想提交并将其推送到github?
我明白你想做什么,但从概念上讲,你的做法是错误的。
如果您想继续使用ssh+private keys,那么新的开发者需要生成一个新的密钥对,然后 * 将他们的公钥添加到.ssh/authorized_keys* -您可以使用以前的密钥来完成此操作
另一种方法,如果你真的坚持要共享帐户和密钥,那么不要将其签入github,为新的开发笔记本电脑提供已经在其盒子上的私钥.或者将密钥放在需要身份验证的共享内部驱动器/挂载上.然后更新您的流程以使用该特定键:scp -i /path/to/mykey user@host,适用于上述任何一种情况
最后,您可以使用带有密码加密的密钥。在这一点上,你与你的开发人员共享密码,你可以把私钥放在任何你想要的地方(尽管,安全Maven会畏缩)。共享密码应该是带外的。
如果你正在寻找一个零努力的解决方案,没有一个,这是通过设计。私钥意味着是私有的,并且对于用户来说也是个人的。如果您共享密钥,就像共享密码一样。你会在github上输入密码吗?很多人会,但当他们有安全漏洞时,没有人应该哭。

相关问题