我不能做源树使用我的尤比克。有人知道我该如何修复它吗?
谢谢。
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。