【问题标题】:indicate a password for git pull in shell script, without ssh?指示 git pull 在 shell 脚本中的密码,没有 ssh?
【发布时间】:2012-03-07 07:42:32
【问题描述】:

我用Git写了一个shell脚本来做项目发布,在shell脚本中我首先cd到Git工作副本,然后做git pull origin master
但它提示我输入密码:git@localhost's password:,这很烦人,我想知道我是否可以在脚本中指定git pull 的密码,如下所示:
git pull origin master --password abcd123
有什么想法吗?

【问题讨论】:

  • 我想指定密码而不是配置 ssh,因为我需要让这个脚本可以从 php 页面执行。
  • 我记得有一个程序可以从脚本中输入密码。不记得怎么叫了
  • 如果您在回忆时告诉我那是什么,我将不胜感激。为什么Git不支持--password参数之类的,mysql和mongodb客户端等很多工具都支持这个。
  • 因为 git 自己没有认证。但我知道在最新版本的 git 中有一些身份验证助手,但不确定它们到底是做什么的。
  • @Ikke 我找到了你提到的程序,它是 sshpass,非常感谢!

标签: git shell


【解决方案1】:

一般情况下:不要将密码放入脚本中,尤其是不要为它们提供命令参数,因为这意味着它们会通过ps 命令发布给同一台计算机上的任何人。

这里的解决方案是使用 ssh 并运行 ssh 代理。当代理尝试通过 SSH 连接到远程端时,它会加载您的私钥并将其提供给 shell 脚本。这样,您只需将密码短语提供给代理即可。

这篇博文应该会给你更多的细节:Password-less logins with OpenSSH

如果您使用的是 Windows,putty 具有相同的功能。

【讨论】:

  • 这没有回答所提出的问题。这只是说“这样做”最佳实践与否,您应该回答这个问题。 git (TFS) dosnt 的一些实现可以很好地与脚本配合使用,因为您需要在 Windows 中执行操作。任何 devops 人都会告诉您在源代码控制中自动执行您想要密码的任务(当然在受保护的存储库中)
  • @Cyber​​Men:这就是我写“运行 ssh 代理”的原因。将您的密钥(来自任何受保护的来源)加载到代理中,然后您就可以设置了。如果您的 Git 版本不支持脚本,则说明您使用了错误的工具。
猜你喜欢
  • 2013-08-17
  • 2011-09-05
  • 1970-01-01
  • 2018-05-21
  • 2012-04-28
  • 2015-09-28
  • 2012-09-06
  • 2019-03-21
  • 2011-09-20
相关资源
最近更新 更多