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

Pat*_*ers 15 authentication passwords ssh 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)使用cat id_rsa.pub打印我的公钥将SSH密钥添加到GitLab

4)通过"工具>添加SSH密钥",然后输入密码("工具>选项> SSH客户端配置",我选择了OpenSSH),将公钥添加到SourceTree.

完成这些步骤后,我可以推送和拉取代码.但是,每次重新启动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:

MSl*_*mer 6

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

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

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

安装 OpenSSH。启动 ssh-agent 服务并设置为自动。将您的私钥添加到代理中

ssh-add <key_file>
Run Code Online (Sandbox Code Playgroud)

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

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

ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)

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

为了允许通常使用 Pageant 的程序和库(例如 Sourcetree、WinSCP 和 Fabric)使用 ssh-agent 提供的密钥,有一个很棒的程序https://github.com/ndbeals/winssh-pageant

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

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

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


mic*_*has 1

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

每当您在未设置这些环境变量的情况下启动命令(如 SourceTree)时,该命令将无法访问代理,因此会要求您输入密码。

让您的代理在系统启动时启动应该可以解决问题。

如果 ssh 无法到达代理,它也会进行调查,~/.ssh/如果您将密钥放在那里,它也应该可以工作。(看一下man ssh。)