如何在启动时自动将受保护的密钥添加到 ssh-agent?

mat*_*ull 3 linux awesome-wm gdm gnome-keyring ssh-agent

我正在使用 gdm 通过 .xinitrc 启动很棒的 wm。我喜欢令人敬畏的可用性和侏儒完整性,到目前为止大多数启动程序都运行良好,但我正在与 ssh-agent 作斗争。启动 gnome 时,我的受密码保护的 id_rsa 会在启动时自动添加到 ssh-agent 中。

我的.xinitrc:

/usr/libexec/at-spi-registryd &
/usr/libexec/gdu-notification-daemon &
gnome-screensaver &
/usr/libexec/vino-server --sm-disable &
/usr/bin/gnome-keyring-daemon --start --components=keyring &
/usr/bin/gnome-keyring-daemon --start --components=secrets &
/usr/bin/gnome-keyring-daemon --start --components=ssh &
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 &
/usr/bin/gnome-keyring-daemon --start --components=gpg &
/usr/libexec/polkit-gnome-authentication-agent-1 &
/usr/libexec/evolution/2.32/evolution-alarm-notify &
/usr/libexec/gnome-settings-daemon &
gnome-power-manager &
gsettings-data-convert &
gnome-volume-control-applet &
nm-applet --sm-disable &
exec /usr/bin/ck-launch-session /usr/bin/dbus-launch --exit-with-session /usr/bin/ssh-agent -- awesome
Run Code Online (Sandbox Code Playgroud)

Gnome 如何解决这个问题?

use*_*686 6

GNOME 将您的 SSH 密钥密码存储在 GNOME 密钥环中,它(login密钥环)通过pam_gnome_keyring以下方式使用您的登录密码解锁

#%PAM-1.0
auth           ...
auth           ...
auth           optional        pam_gnome_keyring.so

session        ...
session        ...
session        optional        pam_gnome_keyring.so auto_start
Run Code Online (Sandbox Code Playgroud)

但是,您当前的设置不适用于此,因为您ssh-agent在最后一步开始,覆盖gnome-keyring可能设置的任何环境变量。删除ssh-agent,并尝试在所有密钥环守护进程之后添加它:

eval $(gnome-keyring-daemon --start)
Run Code Online (Sandbox Code Playgroud)

还要记住,gnome-keyring-daemon通过 DBus 发布一些环境变量,然后由 读取gnome-shellAwesome 不会这样做。那,并且所有守护程序启动启动 DBus 会话总线,因此它们可能根本无法连接到您的会话。

还有一件事:许多守护进程必须ConsoleKit 会话中启动——例如 PolicyKit 身份验证代理。如果您将整个~/.xinitrc脚本替换为:

exec ck-launch-session dbus-launch --exit-with-session ~/.xinitrc-session
Run Code Online (Sandbox Code Playgroud)

然后用于~/.xinitrc-session启动 GNOME 的其余部分。


您可以采用更简单的方法。使用标准ck-launch-session dbus-launch --exit-with-session gnome-session,然后告诉 GNOME 会话管理器启动 Awesome 作为窗口管理器。按照官方说明操作。

GNOME 2 的缩写形式:

mkdir -p ~/.local/share/applications/
cp /usr/share/applications/awesome.desktop ~/.local/share/applications/
cat >> ~/.local/share/applications/awesome.desktop
X-GNOME-WMName=Awesome
X-GNOME-WMSettingsModule=awesome
X-GNOME-Autostart-Phase=WindowManager;Panel
X-GNOME-Provides=windowmanager;panel
X-GNOME-Autostart-Notify=true
[Ctrl-D]
gconftool-2 --set /desktop/gnome/session/required_components/windowmanager --type string awesome
Run Code Online (Sandbox Code Playgroud)