SourceTree在每次重启时都会询问SSH身份验证的密码

时间:2015-07-15 08:48:04

标签: authentication ssh passwords atlassian-sourcetree

在SourceTree中我使用OpenSSH作为身份验证并创建+添加了我的SSH密钥(在Windows上),如下所示:

1)ssh-keygen -t rsa -C "my@email.com" (并输入文件名,密码等)

2)将密钥添加到SSH代理: eval "$(ssh-agent)" ssh-add id_rsa

3)使用SSH密钥添加到GitLab cat id_rsa.pub打印我的公钥

4)通过"工具>向SourceTree添加公钥。添加SSH密钥"然后是密码("工具>选项> SSH客户端配置"我已经选择了OpenSSH)。

完成这些步骤后,我可以推送和提取代码。 但是,每次重新启动SourceTree时,都会弹出一个终端,我必须再次重新输入密码*。如何让SourceTree / SSH代理记住这个密码?

PS。我的密钥保存在像/ d / MyName / Gitlab /而不是〜/ .ssh /这样的目录中,但这不应该是一个问题,对吗?

修改

*终端中显示的消息:

SourceTree is loading your SSH key into the agent for authentication Please enter your passphrase if prompted to do so Enter passphrase for D:\MyName\GitLab\.ssh\id_rsa:

4 个答案:

答案 0 :(得分:0)

您可以手动启动代理并设置环境变量,以便命令找到它。

每当您启动一个没有设置环境变量的命令(如SourceTree)时,该命令就无法访问代理,因此会要求您输入密码。

让代理在系统启动时启动应解决问题。

如果ssh无法访问代理,它也会查看~/.ssh/,如果你把钥匙放在那里它也应该工作。 (看看man ssh。)

答案 1 :(得分:0)

我按照以下步骤解决了这个问题:

  • 找到Pageant的路径(在我的情况下为C:\ Users \ {我的用户} \ AppData \ Local \ SourceTree \ app-3.3.8 \ tools \ putty \ pageant。 exe)
  • 执行Windows键+ R或在Windows栏中键入运行
  • 在文本框中输入shell:startup
  • 为选美捷径添加快捷方式,并将其粘贴到刚刚打开的窗口中
  • 右键单击该快捷方式,然后单击“属性”
  • 在“快捷方式”选项卡中的目标中,放置您的-sourcetree-pageant-path \ pageant.exe id_rsa.ppk
  • 在开始输入C:\ Users \ {my-user} \。ssh中,然后单击确定

请注意,您的id_rsa.ppk必须​​位于C:\ Users \ {我的用户} \。ssh目录中

如果由于某种原因您的id_rsa.ppk受密码保护,并且您确定不会出现安全问题。只需删除密码即可。

要删除id_rsa.ppk的密码短语,请按照以下步骤操作

  • 打开PuttyGen
  • 转到转化=>导入密钥
  • 删除密码
  • 保存私钥和公钥
  • 将不受保护的id_rsa.ppk替换为不受保护的id_rsa.ppk

希望有帮助!

答案 2 :(得分:0)

经过下面的测试,密码从来没有问过我。

要测试您的 SSH 密钥是否已正确添加,请在终端中运行以下命令(将 gitlab.com 替换为您的 GitLab 实例域): ssh -T git@gitlab.com

第一次通过 SSH 连接到 GitLab 时,您应该验证您连接到的 GitLab 主机的真实性。例如,当连接到 GitLab.com 时,回答 yes 将 GitLab.com 添加到受信任主机列表中: 无法确定主机“gitlab.com (35.231.145.151)”的真实性。 ECDSA 密钥指纹是 SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw。 您确定要继续连接吗(是/否)?是的

警告:将“gitlab.com”(ECDSA)永久添加到已知主机列表中。 注意:注意:对于 GitLab.com,请查阅 SSH 主机密钥指纹部分以确保您连接到正确的服务器。例如,您可以在链接部分看到上面显示的 ECDSA 密钥指纹。 一旦添加到已知主机列表中,您应该再次验证 GitLab 主机的真实性。再次运行上述命令,您应该只会收到欢迎使用 GitLab,@username!信息。 如果未出现欢迎消息,您可以通过使用以下命令以详细模式运行 ssh 来解决问题: ssh -Tvvv git@gitlab.com

答案 3 :(得分:0)

您可以使用 Windows OpenSSH ssh-agent 来管理您的密钥。 问题是 Windows 上的 Sourcetree 想要启动它自己的 ssh-agent 实例,而不是使用已经运行的服务。即使您可以使用它,它仍会在启动时提示您输入密钥密码,因为 Sourcetree 的 ssh-agent 进程不会将您的密钥保存到 Windows 钥匙串中。

有很多关于如何使用 Pageant 作为 ssh 代理的说明,但这不是您在这里的原因。您来到这里是因为您想使用 OpenSSH 代理,使用 OpenSSH 格式的密钥和密码,但不会到处提示输入所述密码。

诀窍是将所有对 Pageant 的请求代理到您的 OpenSSH 代理。

安装 OpenSSH。 启动 ssh-agent 服务并设置为自动。 使用

将您的私钥添加到代理
ssh-add <key_file>

将您的公钥添加到您要进行身份验证的主机。

测试您是否可以通过 ssh 进行身份验证:

ssh -T git@github.com

您的私钥现在将在您登录 Windows 帐户时加载,您无需再次提供密码。

为了让 Sourcetree、WinSCP 和 Fabric 等通常使用 Pageant 的程序和库能够使用 ssh-agent 提供的密钥,有一个很棒的程序 https://github.com/ndbeals/winssh-pageant

按照说明安装 winssh-pageant,将其安排为在 Windows 启动时启动的任务。

现在所有对 Pageant 的 NamedPipe 的调用都将被代理到 OpenSSH 代理。

让 SourceTree 与 OpenSSH 一起工作的最后一步有点违反直觉。 转到工具 |选项 |常规并将 SSH 客户端设置为 PuTTY/Plink 并取消选中“Sourcetree 打开时自动启动 SSH 代理”。