在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:
答案 0 :(得分:0)
您可以手动启动代理并设置环境变量,以便命令找到它。
每当您启动一个没有设置环境变量的命令(如SourceTree)时,该命令就无法访问代理,因此会要求您输入密码。
让代理在系统启动时启动应解决问题。
如果ssh无法访问代理,它也会查看~/.ssh/
,如果你把钥匙放在那里它也应该工作。 (看看man ssh
。)
答案 1 :(得分:0)
我按照以下步骤解决了这个问题:
请注意,您的id_rsa.ppk必须位于C:\ Users \ {我的用户} \。ssh目录中
如果由于某种原因您的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 代理”。