问题
我最近在我的计算机上安装了 Kubuntu 16.04.2。从那时起,我就不能再使用我的 ssh 密钥访问 bitbucket 和 github 存储库了。在旧系统 (Ubuntu 14.04) 上,第一次使用密钥时会出现一个标题为“解锁私钥”的弹出窗口(要求输入密码),然后我就可以为剩余的会话做好准备。
自更新以来我收到以下错误:
$ git pull
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这是因为密钥尚未添加到ssh-agent
(尚未)。我可以使用以下命令手动执行此操作:
$ ssh-add ~/.ssh/my_key
Enter passphrase for .ssh/my_key:
这是一种解决方法。
问题
虽然上述解决方法可能会奏效,并且有自动执行的选项(请参阅下面的链接),但我更希望恢复旧功能,即在第一次使用时自动询问我的密码。
我(我的系统)缺少什么才能实现这个功能?我不太清楚涉及哪些部件/程序。
附加信息
不确定这是否相关,但我正在使用 LDAP,所以从 Ubuntu 14.04(使用 Unity)移动到 16.04(使用 KDE)时,我保留了我的主文件夹的内容。
对于我的电子邮件加密密钥,行为没有改变,并通过弹出窗口要求我输入密码。
有另一个问题处理类似的问题。但是,这处理的是不同的版本,并且有不同的目标(他们让它在控制台上运行,我希望我的弹出窗口能恢复)。
答案1
正如前面所说,添加
IdentityFile ~/.ssh/my_key
AddKeysToAgent yes
以~/.ssh/config
实现类似的行为。
如果我将 (
AddKeysToAgent yes
) 添加到我的本地 ssh 配置 (~/.ssh/config
),密钥也会被保存。但是查询是在终端中,这本身并不坏,但我想了解如何恢复此弹出窗口。
旧版 Ubuntu 中的弹出窗口来自gnome-keyring
,您在那里存储了密钥。它显然不在 KDE 版 Ubuntu 中。
没有简单的方法可以从纯 OpenSSH 获得相同的提示。但您可以尝试使用 KWallet,它可能具有类似的功能。
答案2
身份文件的默认文件名如下:
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
添加您自己的文件/etc/ssh/ssh_config
或者重命名它就可以了。
答案3
我会非常惊讶 ubuntu 升级或版本与此有任何关系。
这听起来确实像是 git+ssh 的问题。 这可能毫无关联,但我在通过 ssh 使用 git 和 bitbucket 服务时也遇到了类似的问题。
发生的事情是,我有 2 个 bitbucket 帐户。并且两个 SSH 密钥都加载到我的代理中。bitbucket 不允许多个帐户重复使用同一个 ssh 密钥。所以你被迫有两个。
当两者都加载到我的代理中时,我登录了错误的帐户并出现相同的Permission denied
错误。
我曾经ssh-add -d
暂时取消了我经纪人的身份
然后我发现我可以在我的 ssh 配置中正确地配置它。
Host bitbucket_account2
HostName bitbucket.org
User git
PreferredAuthentications publickey
IdentityFile /home/mathieu/.ssh/bitbucket_account2_rsa
IdentitiesOnly yes
ControlMaster no
然后
git remote remove origin
git remote add origin bitbucket_account2:team/soft.git
玩得开心