我正在尝试通过以下方式连接到 GitHub源树在 OS X 上使用 SSH。尽管我可以连接良好的命令行,但我似乎无法通过 SourceTree 中的 SSH 使用任何存储库,并出现错误:
权限被拒绝(公钥)。
我在网上找到的所有帮助主题都建议在 SourceTree 中配置 SSH 客户端。但是,所有这些文档都是针对 Windows 版本的。如何访问 OS X 版本的 SourceTree 上的 SSH 首选项?
答案1
很难找到这个答案,但看起来这样做的方法就是将 ssh 密钥添加到 Mac OS 中的钥匙串中。我在这里找到了答案:https://wiki.hpcc.msu.edu/display/hpccdocs/Adding+a+Private+Key+to+Your+Mac+OSX+Keychain
来自链接:
在 Mac OSX 上,本机 SSH 客户端可以直接使用内置钥匙串。要将您的私钥添加到钥匙串,只需使用以下命令:
ssh-add -K /path/of/private/key
例如,如果您的私钥存储在 ~/.ssh 并名为 id_rsa,则您可以使用以下命令:
ssh-add -K ~/.ssh/id_rsa
然后系统会提示您输入密码,密码将存储在您的钥匙串中。此后,您就可以进行无密码登录了。
添加 SSH 密钥后,SourceTree 开始正确进行身份验证。
2017 年 1 月 18 日编辑:显然,OSX Sierra 让你在登录时无法取回密钥,因此每次启动计算机时你都必须这样做。但是,Apple stack exchange 提供了一种很好的方法来解决此问题:https://apple.stackexchange.com/questions/48502/how-can-i-permanently-add-my-ssh-private-key-to-keychain-so-it-is-automatically
只需按照答案中的“2017 年 1 月更新”步骤操作即可
答案2
我也尝试用谷歌搜索这个,因为可以在 Windows 版 SourceTree(ST) 的工具部分中使用 OpenSSH 添加自定义 SSH 密钥。
虽然我能够从终端成功地执行 ssh -T,但是 ST for Mac 拒绝访问。
最后,我又想到了将密钥添加到我的代理。现在,当我检查已添加的身份列表时,发现没有任何信息(ssh-add -l)。只需将您的 ssh 密钥添加到代理,ST 就会自动选择您的密钥并授予访问权限。
答案3
我遇到了同样的问题,只不过我收到的错误信息如下:
Permission denied (publickey,password)
我没有尝试并尝试许多不同的解决方案,而是寻找问题的根本原因。我发现 ssh 配置文件(即 )~/.ssh/config
在这个问题中起着作用。在我的例子中,它包含两条记录:
# --- ssh to OUNL ---
Host *
HostName 145.20.188.96
User sjo
PreferredAuthentications publickey
IdentityFile /Users/sjo00577/.ssh/id_ou_rsa
UseKeychain yes
AddKeysToAgent yes
# --- Sourcetree Generated ---
Host *
HostName github.com
User stefjoosten
PreferredAuthentications publickey
IdentityFile /Users/sjo00577/.ssh/id_rsa
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
当我交换这两条记录时,ssh 到 github 又可以正常工作了,但是 ssh 到 145.20.188.96 就不再起作用了。这促使我阅读了ssh 配置文件手册。显然,第一次出现的host *
是用于每个主机的,因此 github 主机完全被遮蔽。以下解决方案解决了该问题:只需让第一条记录仅引用指定主机而不是所有主机:
# --- ssh naar OUNL ---
Host 145.20.188.96
User sjo
PreferredAuthentications publickey
IdentityFile /Users/sjo00577/.ssh/id_ou_rsa
UseKeychain yes
AddKeysToAgent yes
# --- Sourcetree Generated ---
Host *
HostName github.com
User stefjoosten
PreferredAuthentications publickey
IdentityFile /Users/sjo00577/.ssh/id_rsa
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
这很有效,解决了问题。更好的方法是将 github 也限制在正确的主机上。所以我猜你想在 中寻找问题~/.ssh/config
。我认为这个解决方案也适用于 MacBook 上的 Sourcetree 以外的情况。