如题,在 macOS 下 spacemacs 开启github
layer ,按照文档 在 github 生成 token 后加入 git config,SPC g h c c
github-clone
提示:
ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory
Permission denied (publickey).
fatal: Could not read from remote repository.
查找资料后了解到 macOS 上并没有 ssh-askpass,似乎通过在终端外的应用调用 ssh 时就需要用到这个。然后我通过 brew 安装了 mac-ssh-askpass 。
重新测试,还是显示那个错误提示。感觉是 SSH_ASKPASS 的路径设置问题。
(setenv "SSH_ASKPASS" "/usr/local/bin/ssh-askpass")
然后就弹出了个窗口提示输入 ssh key 的密码。看样子是成功了 。(但是我很奇怪为什么是图形窗口而不是在 minibuffer 中提示)
回过来看,发现 gh.el 之类的相关项目似乎并没有提过这样的 issue。
所以,这是我的相关配置不到位嘛?是否用 https 就不会有这样的问题?还是说设置 ssh_askpass 环境变量已经是正解了?总之是否有更好的办法?
然后我发现了一个比较坑的问题:图形窗口没地方输密码!!!
应该用不着安装,GitHub: Working with SSH key passphrases 说把你的 SSH key 加给 ssh-agent 就行了,之后再用这个 SSH Key 就不用输入密码了。macOS 下 ssh-agent 和 Keychain 自动集成了。
另外,你也可以选择不给 SSH key 设置密码,这样压根用不着输入密码了。
LdBeth:
是否用 https 就不会有这样的问题?
通过 https git-clone
用不着任何认证。但是如果要 git-push
,就用提供用户名密码。
1 个赞
虽然还没怎么明白。但是通过链接中的方法: 在终端运行ssh-add
就不需要ssh-askpass就能正常运作了
https://m.th7.cn/show/49/201609/182348.html
感觉还是有点细节问题没解决,比如每次重启以后都要重新’ssh-add’,把相关链接先贴上。
首先,给你的密钥起个名字。很多文章都教你用 id_rsa,真是糟糕的示范。
其次,没必要设置 Keychain,任何类 unix 系统,只要设置 ~/.ssh/config 就可以了。
例如:
$ cat ~/.ssh/config
# default
Host github
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_github
# another account
Host github2
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_github2
...
Host anysite
Hostname anysite.com
User anyaccount
IdentityFile ~/.ssh/id_rsa_anysite
1 个赞
Apparently OSX Sierra made it so you don’t get your keys back when you login, so you’ll have to do this every time you start your computer. BUT, there’s a nice way to fix this from the Apple stack exchange
macos, ssh
我看到这句以后感觉很无语。macOS Sierra 似乎把自动使用 keychain 登陆 ssh 的功能取消了(可手动用 ssh-add -A
调用)。在链接里面看到解决方案就是用 ssh config,不过 macOS 有一些额外的可用选项。
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
同时多谢热情解答!