首页 文章

Git一直在问我的ssh密钥密码

提问于
浏览
402

我正在使用Linux,我按照github教程中的指示创建了密钥,用github注册了它们,并尝试明确地使用ssh-agent - 但是每次我尝试执行pull或push时git都会继续询问我的密码 .

可能是什么原因?

11 回答

  • 5

    听起来您可能遇到SSH-Agent本身的问题 . 我会尝试排除故障 .

    1)您是否使用ssh-add将密钥添加到SSH?

    2)您是否在使用之间关闭终端窗口,因为如果您关闭窗口,则必须在重新打开时再次输入密码 .

  • 4

    如果上述解决方案对我不起作用,那么要检查的一件事是你实际上也有公钥(通常为 id_rsa.pub ) . 这是不寻常的,但这是我的原因 .

    要从私钥创建公钥,请执行以下操作:

    ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
    
  • 1

    我有类似的问题,但其他答案并没有解决我的问题 . 我以为我会继续发布这个以防万一其他人像我一样有一个棘手的设置 .

    事实证明我有多个键,Git首先使用了错误的键 . 它会提示我输入密码,我会输入密码,然后Git会使用一个可以工作的不同密钥(我不需要输入密码) .

    我刚刚删除了它用来提示我输入密码的密钥,现在它可以工作了!

  • 177

    使用以下命令启动SSH代理后:

    eval $(ssh-agent)
    
    • 您必须将私钥添加到其中:
    ssh-add
    

    这只会问你一次你的密码,然后你应该被允许推送,只要你把公钥上传到Github .

    • 永久保存密钥:
    ssh-add -K
    

    通过将其存储在用户的钥匙串中,关闭并重新打开它后,它将保持不变 .

  • 38

    自从OS X El Capitan(10.11)升级到macOS Sierra(10.12)后重新启动后,这种情况一直在发生 . ssh-add 解决方案暂时有效,但在另一次重启时不会持续存在 .

    永久的解决方案是编辑(或创建) ~/.ssh/config 并启用 UseKeychain 选项 .

    Host *
        UseKeychain yes
    

    相关:macOS keeps asking my ssh passphrase since I updated to Sierra

  • 57

    如果您已尝试 ssh-add 但仍然提示您输入密码,请尝试使用 ssh-add -K . 这会将您的密码添加到您的钥匙串中 .

    更新:如果你正在使用macOS Sierra,那么你可能需要再做一步,因为上面的内容可能不再适用 . 将以下内容添加到 ~/.ssh/config

    Host *
      UseKeychain yes
    
  • 800

    我会尝试以下方法:

    • 开始GitBash

    • 编辑 ~/.bashrc 文件

    • 将以下行添加到文件中

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
    function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
        echo succeeded
        chmod 600 ${SSH_ENV}
        . ${SSH_ENV} > /dev/null
        /usr/bin/ssh-add
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . ${SSH_ENV} > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
    
    • 保存并关闭文件

    • 关闭GitBash

    • 重新打开GitBash

    • 输入您的密码

  • -1

    尝试将此添加到 ~/.ssh/config

    Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa

    ...假设您的私钥名为 id_rsa

  • 14

    在Windows上对我有用的是(我从repo 1st克隆了代码):

    eval $(ssh-agent)
    ssh-add 
    git pull
    

    那时它最后一次问我的密码短语

    致谢:解决方案取自https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket

  • 10

    我尝试了不同的解决方案,但没有任但是Bitbucket.com接缝的这一步骤(My GitBash SSH environment always asks for my passphrase, what can I do?)效果很好:

    这个想法是:

    • 你创建了 ~/.bashrc 文件

    • 添加以下脚本:

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
        function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
        echo succeeded
        chmod 600 "${SSH_ENV}"
        . "${SSH_ENV}" > /dev/null
        /usr/bin/ssh-add
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
    
    • 重新运行Bash
  • 2

    为了避免在生成和配置ssh密钥后git要求输入密码,请不要使用https,而是使用:

    git@bitbucket.org:<repo_owner>/<reponame>.git
    

    要么

    ssh://git@bitbucket.org/<repo_owner>/<reponame>.git
    

相关问题