云网牛站
所在位置:首页 > Linux教程 > deepin 15.9.2后的版本gnome-keyring不支持SSH ED25519私钥的解决

deepin 15.9.2后的版本gnome-keyring不支持SSH ED25519私钥的解决

2019-06-28 21:31:56作者:duanyao稿源:深度站

本文针对的是全新安装 deepin 15.9.2 之后的版本,如果出现 gnome-keyring 不支持 SSH ED25519 私钥的问题,请采用下面的方法解决。

 

产生问题

我之前使用 ED25519 格式的 SSH 私钥(设置了密码)登录一些服务器,不用 RSA 的原因是 ED25519 更安全一些,秘钥也短一些。

之前在一台从 deepin 15.6 安装并一路升级的 deepin 上一直用得好好的,从终端登录服务器并不需要每次输入私钥的密码,但另一台全新安装的 deepin 15.10.1,则ssh登录时报错:

sign_and_send_pubkey: signing failed: agent refused operation

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

 

问题的原因

经过一番研究(过程就不说了,很漫长),发现原因如下:

1、deepin 能“记住”SSH 私钥的密码靠的是 gnome-keyring 这个软件,当你首次使用私钥登录服务器时,它会询问你私钥的密码,并记住它。gnome-keyring 起到了 ssh-agent 和 ssh-add 的作用,如果 gnome-keyring 正常工作,你就不需要直接使用 ssh-agent 和 ssh-add 了。

2、gnome-keyring 直到 3.28 才支持 ED25519,发布于去年。deepin 的 panda 源里 gnome-keyring 版本是 3.28,所以我之前一路升级的 deepin用着没问题。但全新安装的 deepin 15.10.1 采用 lion 源,里面的 gnome-keyring 版本是 3.20,不支持 ED25519,所以就悲剧了。

3、gnome-keyring 要正常工作,还需要其它软件包的配合,包括 libpam-gnome-keyring 和 gcr (GNOME crypto services),他们的版本要匹配。

 

解决方法

1、升级 gnome-keyring libpam-gnome-keyring gcr (GNOME crypto services) 这3个包到 3.28 以上:

sudo aptitude install -t panda gnome-keyring libpam-gnome-keyring gcr

请添加 panda 源:解决deepin 15.9.2以后版本软件太旧的问题,混合lion与panda源使用

2、删除旧的 gnome-keyring 数据:

rm ~/.local/share/keyrings/*

3、注销,登录,从终端访问一个 ssh 主机,应该会弹出对话框“输入密码以解锁私钥”。输入私钥的密码,并可以选中“每当我登录时自动解锁该秘钥”。这样以后登录后都不用输入密码解锁私钥了。

注:如果仍然不行,可通过 journalctl --user --since hh:mm | grep -i keyring 查看日志里的错误。

 

相关主题

在Linux系统中允许或拒绝SSH访问特定用户或组的方法

精选文章
热门文章