我正在使用 gdm 通过 .xinitrc 启动 awesome wm。我喜欢 awesome 的可用性和 gnomes 的完整性,到目前为止,大多数启动程序都运行良好,但我在与 ssh-agent 作斗争。启动 gnome 时,我的受密码保护的 id_rsa 会在启动时自动添加到 ssh-agent。我正尝试使用 .xinitrc 启动 awesome wm 来实现同样的效果。
我的.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
Gnome 如何解决这个问题?
答案1
GNOME 将您的 SSH 密钥密码存储在 GNOME Keyring 中,它(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
但是,您当前的设置不适用于此,因为您正从ssh-agent
最后一步开始,覆盖任何环境变量gnome 钥匙圈可能已经设置。删除ssh-agent
,并尝试在所有密钥环守护进程之后添加它:
eval $(gnome-keyring-daemon --start)
还要记住,gnome-keyring-daemon
通过 DBus 发布一些环境变量,然后由 读取gnome-shell
,而 Awesome 却做不到这一点。那,和你是启动 DBus 会话总线后所有守护进程都已启动,所以他们可能根本无法连接到您的会话。
还有一件事:许多守护进程必须开始里面ConsoleKit 会话– 例如 PolicyKit 身份验证代理。如果您将整个~/.xinitrc
脚本替换为以下内容,那么您会更幸运:
exec ck-launch-session dbus-launch --exit-with-session ~/.xinitrc-session
然后使用~/.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
答案2
有什么特殊原因不使用pam_ssh?我觉得这很方便。