我正在一个只能在git中使用https的项目中。出于安全限制,我不允许使用ssh密钥。
在我的开发机器上,我成功地使用了libsecred,方法如下:
sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
sudo make
git config --global credential.helper usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret
每次我从我的nodejs应用程序输入新的用户名/密码对时,libsecred都会为下次注册它们。
在我开始使用Ubuntu Server 20.04在虚拟机上部署之前,一切都运行正常。现在,当我输入git凭据时,我收到以下错误消息:
lookup failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files
安装过程很顺利,libsecred进程正在运行,但是keyring文件丢失了。看起来与git没有连接,即使libsecred在gitconfig文件中被列为帮助程序。
有谁能帮助我使用适当的安全解决方案吗?
1条答案
按热度按时间3pmvbmvn1#
libsecret帮助程序通常需要一个桌面环境来提供secret服务,而在没有运行桌面环境的系统上,将没有可用的secret服务。因此,如果您想使用HTTPS,您将需要使用不同的凭据帮助程序,如
store
。但是,请注意
store
将数据以未加密的方式存放在磁盘上,因此并不十分安全。使用SSH密钥要安全得多,因为您可以将代理转发到远程系统并执行Git操作,但不要在远程系统上留下任何凭据。您应该与网络管理员联系,询问设置此限制的原因,并询问是否可以删除此限制。请注意,如果是因为您使用了TLS MITM代理,Git开发人员(和TLS工作组)出于安全和功能原因建议不要这样做。如果您想要一个安全的方法并且不能使用SSH,那么您必须将令牌存储在本地密码管理器中,例如1Password,并且每次都将其复制并粘贴到终端提示符中。