我使用的是 Ubuntu 13.04,最近更改了我的 ssh 密钥。出于某种原因,Unity 或 Gnome(seahorse?)中的某些东西似乎无法识别它。密钥是在另一台机器上生成的,我基本上将新的 SSH 密钥对复制到/home/user/.ssh
在我复制新密钥后,出现了问题。当我git clone <url>
在 Unity 的终端中运行时,出现此错误:
Agent admitted failure to sign using the key
Permission denied (publickey).
fatal: could not read from remote repository
Please make sure you have the correct access rights
and the repository exists
偶然间,我切换到 tty 控制台并运行了相同的git clone <url>
命令。它确实有效!Unity 中的某些东西是否以某种方式管理 ssh 密钥,并且不知何故它没有使用目录中的密钥对/home/user/.ssh
?
经过一番谷歌搜索后,我尝试运行ssh-add
,但没有成功。我还尝试将所有内容移出目录,/home/user/.local/share/keyrings
然后重新启动,但在 Unity 的终端会话中仍然出现相同的错误。
这可能是什么问题?
答案1
Gnome Keyring 默认管理 Unity 中的 ssh 密钥。
auth.log 显示此信息
gnome-keyring-daemon[1823]: no private keys found in file
gnome-keyring-daemon[1823]: invalid or unrecognized private SSH key: <email>
gnome-keyring-daemon[1823]: signing of the data failed: The operation failed
gnome-keyring-daemon[1823]: no private keys found in file
gnome-keyring-daemon[1823]: invalid or unrecognized private SSH key: <email>
gnome-keyring-daemon[1823]: signing of the data failed: The operation failed
博客文章这里详细说明如何在桌面会话中禁用 Gnome Keyring。我在下面列出了步骤。
在 Unity 中禁用 Gnome Keyring 的步骤:
/etc/xdg/autostart/gnome-keyring-ssh.desktop
1) 通过编辑文件将“NoDisplay”更改为 false,从启动应用程序中“取消隐藏”Gnome Keyring 。
2) 通过 Dash 运行“启动应用程序”,并取消选中 Gnome Keyring。这将阻止 Gnome Keyring 在 Unity 启动时启动。
3)注销,然后重新登录。
重新登录后,我就可以运行git clone <url>
并git fetch
成功。
答案2
Seahorse 是 gnome-keryring 的 GUI。您可以在那里找到您的 ssh 密钥。
SeaHorse 是默认安装的,只需在 dash 中输入 Seahorse 即可。