如何让 git 不提示输入 ssh 密钥的密码?

jcu*_*bic 76 ssh git ssh-keys git-bash

我正在使用 git bash 并使用 ssh-keygen 设置 ssh 密钥,每次我用 repo git 做某事时都会问我/c/Users/jankiewj/.ssh/id_rsa. 有没有办法禁用该密码。

编辑: 我编辑了原始标题(删除了 Windows),因为我刚刚在我的工作笔记本电脑上使用了全新安装的 Ubuntu,当 ssh 密钥有密码时,它总是要求它,解决这个问题的解决方案是一样的。这可能在同样是 Unix 的 MacOSX 上工作相同,并使用相同的基本工具。

jcu*_*bic 98

您可以在 git bash、Windows WLS 或真正的 GNU/Linux 上的 bash 中运行它。

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
Run Code Online (Sandbox Code Playgroud)

它会在第二个命令中要求输入密码,仅此而已。您需要执行的每个附加操作(曾经需要密码短语)都不会要求您输入密码短语(请参阅下面屏幕截图中的示例):

在 Windows 上的 git bash 中添加密码短语

  • 我必须再次输入它,一旦我关闭 git bash ......是否有永久解决方案? (13认同)
  • @Black 这是每个 bash 会话,我已经把它放在`.bashrc` 中,所以每次我打开 git bash 时我都会得到提示,并且对于那个会话我已经准备好了。 (2认同)

小智 27

一个稍微好一点的永久解决方案是在 Windows 上打开 git bash 时自动启动 ssh-agent。您可以在 .profile 或 .bashrc 中复制/粘贴以下内容。我更喜欢把它放在.profile 上

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env
Run Code Online (Sandbox Code Playgroud)

此解决方案取自此 github 帮助文章

  • 该解决方案仍然需要您在第一次打开 git bash 时输入密码,并且您必须打开 git bash 才能运行 git 命令。这不是一个好的永久解决方案 (2认同)