Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
解决新版 deepin 的 gnome-keyring 不支持 SSH ED25519 私钥的问题
Experiences and Insight
948
views ·
0
replies ·
To
floor
Go
duanyao
deepin
2019-06-29 01:46
Author
本帖最后由 duanyao 于 2019-6-28 17:48 编辑
此处“新版”是指 15.9.2 之后全新安装的 deepin 系统。
我之前使用 ED25519 格式的 SSH 私钥(设置了密码)登录一些服务器。不用 RSA 的原因是 ED25519 更安全一些,秘钥也短一些。
之前在一台从 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(
https://bugzilla.gnome.org/show_bug.cgi?id=775981
),发布于去年。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 源:
https://bbs.deepin.org/post/179163
2. 删除旧的 gnome-keyring 数据:
rm ~/.local/share/keyrings/*
3. 注销,登录,从终端访问一个 ssh 主机,应该会弹出对话框“输入密码以解锁私钥”。输入私钥的密码,并可以选中“每当我登录时自动解锁该秘钥”。这样以后登录后都不用输入密码解锁私钥了。
如果仍然不行,可通过 journalctl --user --since hh:mm | grep -i keyring 查看日志里的错误。
Reply
Like 0
Favorite
View the author
All Replies
No replies yet
Please
sign
in first
Featured Collection
Change
[Tutorial] deepin25 WSL Offline Installation Guide
UOS AI 2.8 Released! Three New Intelligent Agents & Major Evolution
Solid Q&A | deepin 25 Common Questions – The Immutable System Edition
New Thread
Popular Events
More
此处“新版”是指 15.9.2 之后全新安装的 deepin 系统。
我之前使用 ED25519 格式的 SSH 私钥(设置了密码)登录一些服务器。不用 RSA 的原因是 ED25519 更安全一些,秘钥也短一些。
之前在一台从 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( https://bugzilla.gnome.org/show_bug.cgi?id=775981 ),发布于去年。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 源: https://bbs.deepin.org/post/179163
2. 删除旧的 gnome-keyring 数据:
rm ~/.local/share/keyrings/*
3. 注销,登录,从终端访问一个 ssh 主机,应该会弹出对话框“输入密码以解锁私钥”。输入私钥的密码,并可以选中“每当我登录时自动解锁该秘钥”。这样以后登录后都不用输入密码解锁私钥了。
如果仍然不行,可通过 journalctl --user --since hh:mm | grep -i keyring 查看日志里的错误。