推/拉后提示输入 ssh 密码

Posted

技术标签:

【中文标题】推/拉后提示输入 ssh 密码【英文标题】:prompted for ssh passphrase after ever push/pull 【发布时间】:2022-01-06 21:45:00 【问题描述】:

我已经在DevOps stackexchange问过这个问题,因为我认为那里更合适,但是已经几天了,我没有得到回应,所以我求助于这里。

我正在使用个人 GitLab 帐户来熟悉它的来龙去脉。首先,我按照this primer 设置 ssh 密钥并将公共和私有 ED25519 密钥添加到 ~\.ssh。我将公钥添加到我的 GitLab 帐户中。然后,使用glab CLI,我能够设置一个存储库,我可以使用git 推送和提取该存储库。

不幸的是,git 仍然会在我每次尝试推送到存储库时提示我输入 SSH 密码。我尝试了以下方法:

添加known hosts entries Verifying that I could connect 使用 ssh -T https://gitlab.com/my_username

已知主机条目对此行为没有任何明显影响。验证我可以连接引发以下错误:

ssh: 无法解析主机名https://gitlab.com/my_username

为什么git 每次推送时都要求我提供密码,我该如何一劳永逸地解决这个问题?

【问题讨论】:

如果您在 ssh 密钥上设置了密码,ssh(不是 Git!)需要密码来解密密钥,以便它可以看到它们。您需要提供密码或运行可以存储和转发密钥的代理。 “could not resolve hostname”错误无关:它表明您的系统无法将gitlab.com转换为IP地址,因此您需要查看您的系统是如何做到的。 我已经解决了“无法解析主机名”的问题。我正在使用 https 链接,所以ssh 无法解决它是有道理的。当我使用链接git@gitlab.com 时,它按预期工作。关于您的第一点,我如何在 Windows 上存储和转发密钥,这样我就不必每次都输入密码? 我不确定,因为我不使用 Windows。在 Unix 系统上,ssh-agent 会做这种事情,毫无疑问是一个 Windows 端口,但你从哪里得到它以及如何设置它,我不知道。但是对于主机名解析:不应该使用 https 或 ssh,因为两者都需要将主机名转换为 IP 地址。 【参考方案1】:

当我使用链接 git@gitlab.com 时,它按预期工作。关于您的第一点,如何在 Windows 上存储和转发密钥,这样我就不必每次都输入密码?

您可以使用 %USERPROFILE%\.bashrc 文件(即使在 Windows 上),就像 GitHub describes 一样(它也适用于 GitLab)

然后,您可以打开 Git bash 并检查 ssh -Tv git@gitlab.com 是否有效,前提是您已将公钥添加到 GitLab 配置文件中。

【讨论】:

以上是关于推/拉后提示输入 ssh 密码的主要内容,如果未能解决你的问题,请参考以下文章

设置 SSH 免密码登陆——仍提示输入密码

解决 git ssh 不断提示输入密码

shell脚本中ssh到远程机子时,提示输入密码?用变量给出密码 要怎么做?请各位帮忙

CentOS配置SSH免密码登录后,仍提示输入密码------[接-(准备完全分布式主机的 ssh)]

git 使用

推送到 gitlab 时要求输入密码?