如何让virt-manager/remote-viewer借助gnome-keyring解密加密SSH密钥
兄弟,我完全懂你每次连SPICE要输7次密码的崩溃!这事儿我之前也踩过坑,核心就是让virt-manager和它调用的remote-viewer能正确用上gnome-keyring的SSH代理——密钥只需要解密一次就会被缓存,后续所有SPICE连接都能直接用,不用反复输入密码。下面是一步步的实操方法:
确认gnome-keyring的SSH代理环境变量已正确配置
先打开终端,输入echo $SSH_AUTH_SOCK,看看输出是不是类似/run/user/1000/keyring/ssh(数字是你的用户ID)。如果输出是/tmp/ssh-XXXXXX/agent.XXXX,说明当前用的是默认的ssh-agent,不是gnome-keyring的。
要是环境变量不对,你可以在~/.bashrc或者~/.profile里添加一行:export SSH_AUTH_SOCK=/run/user/$UID/keyring/ssh保存后重启终端,或者运行
source ~/.bashrc让设置立即生效。把加密SSH密钥添加到gnome-keyring代理
在终端里运行ssh-add ~/.ssh/your_encrypted_key(替换成你实际的密钥文件名,比如id_rsa),输入一次密钥的解密密码——之后gnome-keyring就会把解密后的密钥缓存起来,直到你注销系统为止。确保virt-manager能继承正确的环境变量
如果是从GNOME桌面菜单启动virt-manager,一般系统会自动把gnome-keyring的环境变量传递给应用,不用额外操作。但如果是从命令行启动,要确保你已经加载了上面的环境变量再启动virt-manager。
另外,你可以检查virt-manager的桌面配置文件(路径一般是/usr/share/applications/virt-manager.desktop或者~/.local/share/applications/virt-manager.desktop),看看Exec行有没有覆盖SSH_AUTH_SOCK的设置,要是有的话把那些多余的配置删掉。验证virt-manager的远程连接配置
打开virt-manager,右键点击你的远程KVM连接,选择“编辑连接”:- 切换到“认证”选项卡
- 确认“方法”选的是“SSH密钥”,并且“密钥路径”指向你的加密密钥文件
- 保存配置后重新连接试试
做完这些操作,你再连接远程VM的SPICE显示时,最多只需要输一次密钥密码(如果gnome-keyring还没缓存的话),之后所有SPICE的连接都会自动调用缓存的密钥,再也不会出现反复弹窗要密码的情况了!
备注:内容来源于stack exchange,提问作者Kalsan




