在 Sourcetree 程序上的 Yubikey 上使用 ssh 密钥

在 Sourcetree 程序上的 Yubikey 上使用 ssh 密钥

我不能做源树使用我的尤比克。有人知道我该如何修复它吗?

谢谢。

PD:我尝试了在互联网上找到的各种建议,但都没有用。例如,我使用终端上的 ssh 连接到 github 并且运行正常,但 Sourcetree 不起作用。

我正在尝试苹果系统莫哈韦

这是 Sourcetree 放在 .ssh/config 中的配置

# --- Sourcetree Generated ---
Host *******-GitHub
    HostName github.com
    User ******
    PreferredAuthentications publickey
    IdentityFile /Users/*******/.ssh/GitHub
    UseKeychain yes
    AddKeysToAgent yes
# ----------------------------

# --- Sourcetree Generated ---
Host ******-GitLab
    HostName GitLab
    User *******
    PreferredAuthentications publickey
    IdentityFile /Users/******/.ssh/GitLab
    UseKeychain yes
    AddKeysToAgent yes
# ----------------------------

我曾尝试删除此文件,但没有成功。

我也尝试过通过将(Yubikey)公钥放入其中来修改引用IdentityFile的密钥,但是没有任何效果。

最后我修改了与 sourcetree 关联的 github 和 gitlab 帐户,这样同一个程序就不会生成 ssh 密钥,但它也不起作用,因为它无法识别 yubikey 的 ssh 私钥。

奇怪的是,如果使用 ssh 从终端建立连接[电子邮件保护]它运行完美。

答案1

目前还没有明确的解决方案,因为 atlassian 尚未发布解决此问题的更新。

问题在于 Macos 如何使用 GUI 操作应用程序,因为它们无法读取 shell 环境变量的信息,例如SSH_AUTH_SOCK

A可能的解决方案我发现这可以应用于源树而cyberduck程序是直接从系统的shell启动应用程序,以便它可以读取这些变量。

为了避免总是使用终端打开应用程序,最好创建一个执行macos 识别的文件,其中我们将介绍以下内容:

#!/bin/bash
/Applications/Sourcetree.app/Contents/MacOS/Sourcetree &
exit 0

最后,我们应用744 权限这样 macos 就会将其识别为 exec shell 文件。

chmod 744 open_source_tree

观察:为了让 shell 在与 sourcetree 对话后不打开(例如),我们必须修改 shell 的配置,使其在退出后关闭。在此 stackoverflow 线程中解释了如何执行此操作https://stackoverflow.com/questions/5560167

通过这种方式,我们可以在桌面上创建图标,通过终端(在后台)打开 GUI 应用程序,并且这些应用程序可以使用gpg-代理作为ssh 代理使用带有身份验证密钥的 yubikey。

相关内容