如何从Jupyter Notebook中向shell命令“ git push”输入密码?

时间:2018-08-11 10:23:12

标签: python linux shell ipython jupyter-notebook

我在Jupyter Notebook的单元格中具有以下代码:

!git push origin master

这将询问我的Github密码,但由于找不到输入密码的方式,单元继续运行。由于某种原因,我想以这种方式推送代码。

我尝试遵循similar questions,但对于我来说似乎没有任何作用。这是我尝试过的方法,但是没有用:

import getpass
import os

password = getpass.getpass()
command = "git -S push origin master " #can be any command but don't forget -S as it enables input from stdin
os.system('echo %s | %s' % (password, command))

这是上面的日志:

unknown option: -S
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

1 个答案:

答案 0 :(得分:0)

-Ssudo的一个选项,而不是git ...,您可以看到git甚至都不要求输入密码,它只是告诉您{{ 1}}无效。

我相信-S使用安全的方式来获取密码,是从git读取而不是从stdin读取。正确输入tty来输入该密码以使其正常工作可能非常困难。此外,这意味着您必须在笔记本中以纯文本形式编写密码。

处理此问题的正确方法是:

  • 使用tty 无密码生成一个ssh密钥
  • 配置服务器以使用该密钥
  • 配置ssh-keygen以使用SSH协议执行git

这完全避免了要求输入密码的情况。